Zeileneinzug und Zeilenlänge

Nutze einen Zeileneinzug von 4 Leerzeichen, ohne Tabs. Es wird empfohlen Zeilen nach maximal 75-85 Zeichen umzubrechen. Es gibt keine Standardregeln für das Umbrechen von Zeilen (Unter Windows haben sich 80 Zeichen/Zeile bewährt), nutze Dein Beurteilungsvermögen.


Kontrollstrukturen

Diese beinhalten if, for, while, switch, etc. Kontroll Anweisungen sollten ein Leerzeichen zwischen dem
Kontrollschlüsselwort und der sich öffnenden runden Klammer haben, um sich von den Funktionsaufrufen
zu unterscheiden.
Es wird stark empfohlen geschweifte Klammern zu nutzen, auch wo sie technisch gesehen nur optional
sind. Sie einzusetzen erhöht die Lesbarkeit und verhindert gleichzeitig logische Fehler, die sich
einschleichen können, wenn neue Zeilen hinzugefügt werden.

Beispiel für eine if Abfrage:

<?php
if ((condition1) || (condition2)) {
action1;
} elseif ((condition3) && (condition4)) {
action2;
} else {
defaultaction;
}
?>

Beispiel für die Switch Anweisung:

<?php
switch (condition) {
case 1:
action1;
break;
case 2:
action2;
break;
default:
defaultaction;
break;
}
?>

Operatoren


(+, -, *, /, =, ==, <<, <, >, >>, ||, &&, ... [alle eben]) sollten immer ein Leerzeichen vor und nach dem
eigentlichen Operator haben.


<?php
$var += $c + $d ($b - $v);
?>

Funktionsaufrufe


Funktionen sollten ohne Leerzeichen zwischen dem Funktionsnamen und der sich öffnenden runden
Klammer, und dem ersten Parameter aufgerufen werden; Leerzeichen zwischen Kommas und jedem
Parameter, und keine Leerzeichen zwischen dem letzen Parameter und der sich schliessenden Klammer,
und dem Semikolon Hier ein Beispiel:


<?php
$var = foo($bar, $baz, $quux);
?>


Wie oben gezeigt, sollte ein Leerzeichen auf jeder Seite der Zuweisung des Rückgabewertes an eine
Variable sein. Im Falle, dass ein Block von Anweisungen kommt, können mehr Leerzeichen eingefügt
werden, um die Lesbarkeit des Codes zu verbessern:


<?php
$short = foo($bar);
$long_variable = foo($baz);
?>
Funktionen Definieren
Funktionsdeklarationen folgen der "one true brace" Konvention:
<?php
function fooFunction($arg1, $arg2 = '')
{
if (condition) {
statement;
}
return $val;
}
?>

Funktionsparameter mit Standardwerten werden ans Ende der Parameterliste gesetzt. Es sollte immer
versucht werden einen aussagekräftigen Wert aus einer Funktion zurückgeben zu lassen, wenn
angebracht. Hier ein etwas größeres Beispiel:


<?php
function connect(&$dsn, $persistent = false)
{
if (is_array($dsn)) {
$dsninfo = &$dsn;
} else {
$dsninfo = DB::parseDSN($dsn);
}
if (!$dsninfo || !$dsninfo['phptype']) {
return $this->raiseError();
}
return true;
}
?>


Arrays
Bei Arrayoperationen immer ' und ' (KEIN ") verwenden ( ausser in templates, dort garnichts )


<?php
//Falsch:
$var[name]=$foo;
//Unerwünscht:
$var["name"]=$foo;
//Richtig:
$var['name'] = $foo;
?>


Strings
Strings zwischen einfachen Anführungszeichen ' und ' werden vom php parser nicht geparst, d.h.
$variablen in solchen Strings werden nicht ersetzt. Wenn es in einem string keine variablen gibt, so sollte '
und ' verwendet werden. Variablen in Strings (Also mit "") sollten nach Möglichkeit immer vermieden
werden, besser ist es, diese Strings mit dem . Operator zusammenzuhängen. (Ausnahme: MySQL Queries)


<?php
//Falsch:
$var = "es gibt keine neuen nachrichten";
$var = 'es gibt $n neue nachrichten';
//Unerwünscht
$var = "es gibt $n neue nachrichten";
//Richtig:
$var = 'es gibt keine neuen nachrichten';
$var = 'es gibt '.$n.' neue nachrichten';
?>

Code hinzufügen

Überall da, wo du ohne Vorbehalt eine Klassendatei einfügst, nutze require_once(). Überall wo du unter Vorbehalt eine Klassendatei einfügst (z.B. Factory Methoden), nutze include_once(). Beide stellen sicher, dass die Klassendatei nur einmal eingefügt wird. Sie halten die gleiche Dateiliste, damit musst Du dir keine Sorgen über die gemischte Verwendung beider machen - eine Datei die mit require_once() eingefügt wird, wird nicht noch einmal mit include_once() eingefügt.


Anmerkung: include_once() und require_once() sind Anweisungen, keine Funktionen. Es werden keine runden Klammern um die Dateinamen der Klassendateien benötigt.

PHP Code Tags

Nutze immer <?php ?>, um PHP code auszuweisen, nicht die <? ?> Kurzform. Dies wird für die allgemeine Kompatibilität benötigt und ist der sicherste Weg PHP Code auch auf anderen Betriebssystemen und Konfigurationen zu portieren. Die Kurzform wird voraussichtlich ab php6 nicht mehr unterstützt werden.

Beispiel URLs

Benutze "beispiel.com", "beispiel.org" und "beispiel.net" für alle Beispiel URLs und E-Mail Adresen, nach RFC 2606.

Kommentare

Inline Dokumentation für Klassen sollten der PHPDoc Konvention folgen, ähnlich der Javadoc. Mehr Informationen zu PHPDoc können hier gefunden werden: http://www.phpdoc.org/ .

Nicht-Dokumentation Kommentare werden strengstens empfohlen. Eine allgemeine anwendbare Regel ist, sich einen Codebereich anzusehen und und zu denken "Wow, Ich habe keine Lust später darin rumzusuchen und beschreibe es", Du solltest es auskommentieren, bevor du vergessen hast wie der Code funktioniert.
C Style Kommentare (/* */) und Standard C++ Kommentare (//) sind beide gut. Die Nutzung der Perl/shell Style Kommentare (#) ist nicht erwünscht.