php.de

Zurück   php.de > PHP.de Wiki

Kategorien

Autoren:Coding Standard

Aus PHP.de Wiki

Wechseln zu:Navigation, Suche


Im Hinblick auf eine Einheitlichkeit und gute Verständlichkeit streben wir in allen Codefragmenten des Wikis einen einheitlichen Standard an. Die Ausnahme bilden fertige Tutorials (Neu-Autoren dürfen natürlich trotzdem Einheitlichkeit anstreben).


Inhaltsverzeichnis

Allgemeine Notation

Zwischen Operanden und deren Operator steht immer ein Leerzeichen. Ausgenommen davon sind unäre Operatoren.

$var = 3;
$var < 5;
$var1 && $var2;
$var .= 'abc';
$var & 2;
$var = $var . 'abc';
 
// aber:
$var++;
++$var;
$var = -2;

Pro Zeile wird nur eine Anweisung notiert.

// falsch:
$var1 = $var2; $var3 = $var4;
 
// richtig:
$var1 = $var2;
$var3 = $var4;


Variablen und Konstanten

Variablennamen werden in camelCases notiert. Sie beginnen also mit einem Kleinbuchstaben und jedes weitere Wort wird mit einem Großbuchstaben angehängt.

$myVariable = 5;

Im Gegensatz dazu werden Konstanten durchgängig großgeschrieben. Einzelne Wörter werden mit Unterstrichen getrennt.

define('MY_CONSTANT', 'xyz');

Ausgenommen von dieser Konvention sind die Konstanten true, false und null, diese werden durchgängig kleingeschrieben.

$var1 = true;
$var2 = false;
$var3 = null;

Alle Bezeichner (Variablen, Konstanten, Klassen, Methoden etc.) bestehen aus englischen Wörtern und sollten selbstklärend sein.


Einrückungen

Code-Blöcke werden immer mit vier Leerzeichen eingerückt. Die Verwendung harter Tabs sollte vermieden werden. Besonders wichtig ist es jedoch, dass innerhalb einer Datei nicht gewechselt wird.

{
    // Code-Block mit vier Leerzeichen eingerückt
}


Zeilenlänge

Eine Zeile sollte nicht mehr als 80 Zeichen lang sein. Dies stellt sicher, dass auch auf kleineren Bildschirmen noch die gesamte Zeile sichtbar ist und übermäßiges Scrolling vermieden wird. Wenn eine Code-Zeile länger als 80 Zeichen ist, wird ein Umbruch eingefügt. Nach einer Einrückung wird die Code-Zeile fortgeführt.


Kontrollstrukturen

Wie bei den Sprachkonstrukten wird zwischen das Schlüsselwort und die öffnende runde Klammer ein Leerzeichen gesetzt. Nach der schließenden runden Klammer folgt wieder ein Leerzeichen und dann die öffnende geschweifte Klammer.

Geschweifte Klammern müssen immer geschrieben werden, auch wenn sie rein syntaktisch nicht notwendig wären!

Enhält ein Sprachkonstrukt weitere Notationen, so werden diese ebenfalls eingerückt (z.B. switch). Ob für weitere Entscheidungszweige in if-Statements die Schreibweise elseif oder else if verwendet wird, bleibt dem Entwickler selbst überlassen. Da else if aber die weiter verbreitete Schreibweise ist, sollte diese vorgezogen werden.

Nach der öffnenden und vor der schließenden runden Klammern steht kein weiteres Leerzeichen.

if (/* Bedingung */) {
    // ...
} else if (/* Bedingung */) {
    // ...
} else {
    // ...
}
for ($i = 0; $i < 5; $i++) {
    // ...
}
switch ($i) {
    case 1:
        // ...
        break;
 
    case 2:
        // ...
        break;
 
    default:
        // ...
}
do {
    // ...
} while (/* Bedingung */);


Funktionsaufrufe

Nach dem Funktionsnamen wird direkt die öffnende Klammer notiert. Die übergebenen Parameter werden mit Kommata getrennt, wobei zwischen Komma und nächstem Parameter ein Leerzeichen steht.

$var1 = foo(1, 2, 3);
$var2 = bar();


Sprachkonstrukte

Sprachkonstrukte, die keine Klammern erfordern, werden generell ohne diese geschrieben. Zu ihnen gehören u.a. require_once, include_once, echo und print:

require_once 'file.php';
include_once 'file.php';
 
print 'foo';
echo 'bar';


Klassen- und Funktions-/Methoden-Deklarationen

Die Klammersetzung bei Klassen- und Methoden-Deklarationen unterscheidet sich von der Klammersetzung der Kontrollstukturen. Hier wird die öffnende geschweifte Klammer immer in eine eigene Zeile gesetzt.

Klassennamen werden in PascalCases geschrieben, beginnen also mit einem Großbuchstaben. Jedes weitere Wort wird mit einem weiteren Großbuchstaben angehängt.

Funktions-/Methoden- und Eigenschaftsnamen werden hingegen in camelCases notiert. Sie beginnen also mit einem Kleinbuchstaben und jedes weitere Wort wird mit einem Großbuchstaben angehängt.

class MyAmazingClass
{
    public function __construct()
    {
        // ...
    }
}
function myFunction()
{
    // ...
}


PHP-Tags

Es müssen immer ausgeschriebene PHP-Tags (<?php ... ?>) benutzt werden. Short-Tags und ähnliche Grausamkeiten sind zu unterlassen.

Es wird dringend empfohlen, schließende ?> am Scriptende zu vermeiden, um dem üblichen headers already sent Fehler vorzubeugen.


Kommentare

Für einzeilige Kommentare ist das Kommentarzeichen // zu benutzen, für mehrzeilige das Kommentarzeichen /* ... */. Auf das Gatterzeichen (#) sollte verzichtet werden. Nach dem einleitenden Kommentarzeichen folgt zunächst ein Leerzeichen. Bei mehrzeiligen Kommentaren stehen einleitendes und ausleitendes Kommentarzeichen in einer eigenen Zeile.

//falsch
// richtig 
 
/*falsch*/
/* fast richtig */
 
/*
richtig
*/
 
/*
    noch richtiger
*/

Kommentare werden nicht mit der Applikationslogik vermischt und stehen deshalb nicht mit einer PHP-Anweisung zusammen in einer Zeile.

$x = 5; // falsch
 
// richtig
$x = 5;


Empfehlung zu Stringbegrenzern

Im Allgemeinen empfehlen sich einfache Hochkommata als Stringbegrenzer. Sie erlauben die Ausgabe von Anführungszeichen (") ohne Escapezeichen, die vor allem für die Angabe von Attributen in HTML weit verbreitet sind.

Da in einfach gequoteten Strings keine Variablen geparst werden, ergibt sich eine Syntax, die Variablen via Konkatenation (.-Operator) mit dem Reststring verbindet. Vorteilhaft wirkt sich hier die bessere Darstellung im Syntaxhighlighting aus, was das Auftreten von Parserfehlern verringern kann:

// nur mit gutem Grund verwenden
echo "wrong: $wrong; some more: $more";  
echo "<input type=\"text\" value=\"$value\">";  
 
// besser ist
echo 'right: ' . $right . '; some more: ' . $more;  
echo '<input type="text" value="' . $value . '">';


Assoziative Arrayschlüssel

Assoziative (also String-)Arrayschlüssel sind stets mit Stringbegrenzern zu versehen. Auch wenn PHP hier sehr gutwillig reagiert, sind Arrayschlüssel zumeist keine Konstanten und gehören damit als String ausgezeichnet.

$myArray = array();
 
/* 
   Funktional, aber falsch.
   Wenn abc ein String ist, gehört es in Stringbegrenzer, 
   als Konstante großgeschrieben
   Zudem: Würde einmal die Konstante abc definiert, ergäbe sich plötzlich
   ein komplett neuer Arrayschlüssel
*/
$myArray[abc] = 'pseudo-konstante'; 
 
// richtig
$myArray[0] = 'numerisch';
$myArray['abc'] = 'assoziativ';

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:20 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Powered by vbWiki Pro 1.3 RC5. Copyright ©2006-2007, NuHit, LLC

Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum