Coding guidelines

This document is here to help code standards for contributions towards LibreNMS. The original code base that we forked from had a lack of standards and as such the code base has a variety of different styles. Whilst we don't want to restrict how people write code, these guidelines should mean we have a good standard going forward that makes reading the code easier. All modern day ide's should be able to assist in these guidelines without breaking your usual workflow.

PHP-FIG PSR-2 Coding Style

All new code should follow the PHP-FIG PSR-2 standard. Below are a few key items from that specification, please make sure to follow the full spec.

Indentation

Please use four (4) spaces to indent code rather than a tab. Ensure you increase indentation for nested code blocks.

if ($foo == 5) {
    if ($foo == 5) {
        if ($foo == 5) {

Line length

Try to keep the length of a line under 80 characters. If you must exceed 80 characters, please keep it under 120 characters. This makes reading the code easier and also enables compatibility for all screen sizes.

Control structures

A space must be used both before and after the parenthesis and also surrounding the condition operator.

if ($foo == 5) {

Do not put blocks of code on a single line, do use parenthesis

if ($foo == 5) {
    echo 'foo is 5';
}

else and elseif should start on the same line as ending of the previous code block.

if ($foo == 5) {
    echo 'foo is 5';
} elsif ($foo == 4) {
    echo 'foo is 4';
} else {
    echo 'foo is something else';
}

Including files

Using parenthesis around file includes isn't required, instead just place the file in between ''

require_once 'includes/snmp.inc.php';

PHP tags

Ensure you use <?php rather than the shorthand version <?.

<?php

The ?> must be excluded from all files that only include PHP (no html). For instance anything in includes/ or html/includes don't need the tag along with config.php.