Concrete5: Entwicklung mit Concrete5: Coding Style Anleitung
Erscheinungsbild
Zurück zu 'Verzeichnisanordnung' | Hoch zu 'Inhaltsverzeichnis' | Vor zu 'Concrete's Anwendungsablauf'
Für diejenigen, die Code in Conrete5 hinzufügen möchten, gibt es hier eine kleine Anleitung der Entwickler was beachtet werden sollte. (Hinweis: die Struktur dieses Dokuments wurde von Zend Framework Coding Style Guide übernommen. Vielen Dank Jungs!)
Dateiformatierung
[Bearbeiten]- Beginnen Sie Ihren Code Block mit '<?php' nicht mit '<?'. (Concrete's Script Anforderung)
- Rücken Sie Ihren Code mit Tabs, nicht mit Leerzeichen ein.
- Wenn eine Datei nur PHP Code enthält, ist dringend davon abzuraten das ?> Tag einzufügen.
- Eine Zeilenlänge von 80 Zeichen wird empfohlen.
- UNIX Style Zeilenenden werden benötigt.
Namenskonventionen
[Bearbeiten]Dateinamen
[Bearbeiten]- Alle Dateinamen sollten klein geschrieben werden, mit einem Unterstrich ("_") um lexikalische Ausdrücke zu separieren.
Klassen-/Funktionsnamen
[Bearbeiten]- Block Klassennamen werden in folgendem Format benötigt MyBlocksNameBlockController, wobei "MyBlocksName" die camel-cased Version des Block Verzeichnis im Dateisystem ist. Das bedeutet, dass ein Block der beispielsweise "image_gallery" heißt, wie folgt in der controller.php Datei benannt werden muss "ImageGalleryBlockController". Hinweis: Die Schreibweise ohne den Unterstrich erfordet "ImagegalleryBlockController" in controller.php.
- "Helpers" werden in diesem Format "HelperNameHelper" benötigt. Wird zum Beispiel ein neues Helferlein hinzugefügt im Helpers Verzeichnis, der als "ldap_authenticate" benannt ist, muss des Helfers Klassenname LdapAuthenticateHelper sein.
Klassen-/Funktionsmethoden
[Bearbeiten]- Kernmodule und Bibliotheken sollte man einfachheitshalber so benennen, wie sie auch in der Datenbank vorkommen ("page.php","Page" and "Pages", "page_theme.php", "PageTheme" and "PageThemes"), etc..
- Innerhalb von Modulen, sollten alle Funktionen und Klassennamen in camel-cased Schreibweise, ohne Unterzeichen implementiert sein.
- Innerhalb von "controllers", sollten alle Funktionen durch Unterzeichen getrennt und kleingeschrieben sein.
Parameter
[Bearbeiten]- Alle controller Parameter sollten mit Unterzeichen und klein geschrieben werden.
Datenbank Tabellen
[Bearbeiten]Alle Datenbank Tabellen sollten camel-cased, nicht klein geschrieben sein, mit folgenden Ausnahmen:
- Tabellen die speziell für Blöcke gedacht sind sollten mit kleingeschriebenem "bt" beginnen, und von dort aus ablaufen.
- Verwendet ein Block mehrere Tabellen um Daten zu speichern, empfiehlt es sich "block" an den Anfang der Tabellennamen zu stellen, und zudem dessen Blocks Basistabellennamen anzufügen. Für eine Abstimmung könnten die Tabellen beispielsweise wie folgt aussehen:
- btAbstimmung btAbstimmungFragen btAbstimmungAntworten
Coding Style
[Bearbeiten]Strings
[Bearbeiten]- String Literalen: Ist ein String eine Literale (enthält also keine Variablen Substitution), sollte ein Apostroph oder ein "einzelnes Anführungszeichen" verwendet werden um den String abzugrenzen.
- String Literalen m/Apostrophen: Enthält ein String seinerseits einen Apostroph, ist es ihm erlaubt Anführungszeichen, bzw. "doppelte Anführungsstriche" zu verwenden um den String abzugrenzen.
- Variablen Substitution: Variablen substitution ist in folgenden zwei Formen erlaubt:
- $greeting = "Hello $name, welcome back!"; $greeting = "Hello {$name}, welcome back!"; Um Inkonsistenzen zu vermeiden sollte keine andere Form verwendet werden.
- String Verkettung: Strings können mit dem "." Operator verkettet werden. Ein Leerzeichen muss immer vor und hinter dem "." operator gesetzt werden um die Lesbarkeit zu verbessern:
- $dish = 'Fruit' . ' ' . 'Salad';
- Beim Verketten von Strings mit dem "." Operator, ist es zur Verbesserung der Lesbarkeit erlaubt, den Ausdruck auf mehrere Zeilen zu verteilen. In diesem Fall, sollte jede nachfolgende Zeile mit Leerzeichen eingerückt werden, so dass der "." Operator unter dem "=" operator positioniert ist:
- $sql = "SELECT uID, uName FROM Users " . "WHERE uName = 'andrew' " . "ORDER BY uName ASC ";
Arrays
[Bearbeiten]Numerisch indizierte Arrays
- Negative Werte sind als Indizes nicht zulässig
- Es ist dringend zu empfehlen ein Array mit dem 0 Index zu beginnen.
- Werden indizierte Arrays mit dem Array Konstrukter deklariert, muss zur Verbesserung der Lesbarkeit ein trennendes Leerzeichen hinter jedem Komma eingefügt werden:
- $sampleArray = array(1, 2, 3, 'Concrete');
Assoziative Arrays
- Beim deklarieren von assoziativen Arrays mit dem Array Konstruktor, ist es sinnvoll den Ausdruck auf mehrere Zeilen zu verteilen. In diesem Fall, sollte wiederum jede nachfolgende Zeile eingerückt werden, so dass die Schlüssel und dazugehörigen Werte ausgerichtet werden.
Klassen and Methoden/Funktionen
[Bearbeiten]- Klassen Namen sollten, ohne sie einzurücken, auf der linken Seite Ihres Codes beginnen.
- Alle Klammern nach Klassen und Funktionen sollten auf der gleichen Zeile stehen wie die Funktions-/Klassen Direktive.
- Wird eine Klasse /Funktion beendet, sollten die Klammern einzeln in einer eigenen Zeilen stehen. Die letzte schließende Klammer einer Funktion oder Klasse sollte auf der gleichen Zeilenspalte wie die beginnende stehen.
- PHP5 Schlüsselwörter sollten bei der Deklaration von Klassenvariablen verwendet werden.
Kontrollstrukturen
[Bearbeiten]If/Else If/Else
[Bearbeiten]- Kontrollstrukturen die auf if und elseif Konstrukten basieren, müssen ein einzelnes Leerzeichen vor der öffnenden und nach der schließenden geschweiften Klammer der Anweisung haben.
- Innerhalb des Anweisungsblock, müssen Operatoren zur Erhöhung der Lesbarkeit mit einem Leerzeichen getrennt werden. Innere Klammern sind Einzurücken, um eine logische Gruppierung längerer Anweisungen zu verbessern.
- Die öffnende Klammer wird auf der gleichen Zeile wie der Anweisungsausdruck geschrieben. Die schließende Klammer wird immer in eine eigene Zeile geschrieben. Jeder Inhalt innerhalb der Klammern muss mit einem Tab eingerückt werden.
- Der Gebrauch des "elseif" Konstrukts ist erlaubt, aber es sollte stattdessen die "else if" Kombination benutzt werden.
- Klammern bei einzelenen "if's" oder "else's" wegzulassen ist nicht erlaubt.
Switch Ausdrücke
[Bearbeiten]- Kontrollausdrücke die mit dem "switch" Konstrukt geschrieben sind, müssen ein einzelnes Leerzeichen vor der öffnenden und nach der schließenden geschweiften Klammer der Anweisung haben.
- Jeder Inhalt innerhalb der Klammern muss mit einem Tab eingerückt werden. Inhalt innerhalb jedes "case" Ausdrucks muss mit einem zusaätzlichen Tab eingerückt sein:
- switch ($numPeople) { case 1: break;
- case 2: break;
- default: break; }
- Das Konstrukt 'default' darf nie innerhalb eine switch Ausdruckes fehlen.
Alternativer Syntax
[Bearbeiten]- PHP's [syntax for control structures] ist nicht erlaubt.
Zurück zu 'Verzeichnisanordnung' | Hoch zu 'Inhaltsverzeichnis' | Vor zu 'Concrete's Anwendungsablauf'