Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
dev:all:psr-1de [12.08.2014 10:23] – angelegt Manuela v.d.Decken | dev:all:psr:psr-1 [17.08.2019 17:14] – [Übersicht] Manuela v.d.Decken | ||
---|---|---|---|
Zeile 5: | Zeile 5: | ||
===== Übersicht ===== | ===== Übersicht ===== | ||
- | * Dateien MÜSSEN ausschließlich **''<? | + | * Dateien MÜSSEN ausschließlich **''<? |
* Dateien MÜSSEN ausschließlich UTF-8 ohne BOM codiert werden. | * Dateien MÜSSEN ausschließlich UTF-8 ohne BOM codiert werden. | ||
- | * Dateien SOLLTEN entweder Symbole (Klassen, Funktionen, Konstanten etc.) deklarieren **ODER** direkt ausführbaren Code (// | + | * Dateien SOLLTEN entweder Symbole (Klassen, Funktionen, Konstanten etc.) deklarieren **ODER** direkt ausführbaren Code (//**side-effects**//) enthalten. Aber sie SOLLTEN NICHT beides gleichzeitig tun. |
- | * Namensräume | + | * Namespaces |
* Klassennamen MÜSSEN in // | * Klassennamen MÜSSEN in // | ||
* Klassenkonstanten MÜSSEN in Großbuchstaben mit _ zwischen einzelnen Worten deklariert werden. | * Klassenkonstanten MÜSSEN in Großbuchstaben mit _ zwischen einzelnen Worten deklariert werden. | ||
Zeile 20: | Zeile 20: | ||
PHP-Code MUSS ausschließlich UTF-8 ohne BOM verwenden. | PHP-Code MUSS ausschließlich UTF-8 ohne BOM verwenden. | ||
+ | ==== Side Effects ==== | ||
+ | Eine Datei SOLLTE entweder neue Symbole (Klassen, Funktionen, Konstanten, etc.) deklarieren und keinerlei 'side effects' | ||
+ | Die Phrase 'side effects' | ||
+ | 'side effects' | ||
+ | :!: //Anpassung für WB:// Dateien mit 'side effects' | ||
+ | Das Nachfolgende ist ein Beispiel einer Datei, die sowohl Deklarationen als auch 'side effects' | ||
+ | <PHP> | ||
+ | // side effect: ändert Ini-Settings | ||
+ | ini_set(' | ||
+ | |||
+ | // side effect: lädt eine Datei | ||
+ | include(' | ||
+ | |||
+ | // side effect: erzeugt eine Ausgabe | ||
+ | echo '< | ||
+ | |||
+ | // Deklaration: | ||
+ | function foo() | ||
+ | { | ||
+ | // Funktionskörper | ||
+ | } | ||
+ | </ | ||
+ | Das zweite Beispiel ist eine Datei, die nur Deklarationen ohne alle 'side effects' | ||
+ | <PHP> | ||
+ | // Deklaration | ||
+ | function foo() | ||
+ | { | ||
+ | // Funktionskörper | ||
+ | } | ||
+ | |||
+ | // bedingte Deklaration ist *kein* side effect! | ||
+ | if (! function_exists(' | ||
+ | function bar() | ||
+ | { | ||
+ | // Funktionskörper | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Namespaces und Klassennamen ===== | ||
+ | |||
+ | Die Benennung von Namespaces und Klassen MUSS nach [[dev: | ||
+ | |||
+ | Das bedeutet, dass jede Klasse in einer eigenen Datei ist und einem Namespace zugewiesen, der wenigstens den Vendor Name als Top-Level hat. | ||
+ | |||
+ | Klassennamen MÜSSEN in **StudlyCaps** deklariert werden. | ||
+ | |||
+ | :!: //Anpassung für WB:// Interfaces und abstrakte Klassen müssen im Namen zusätzlich mit dem Suffix **Interface** oder **Abstract** ergänzt werden.\\ | ||
+ | |||
+ | |||
+ | Code der für PHP-5.3 und höher geschrieben wird MUSS formale Namespace nutzen. | ||
+ | |||
+ | Beispiel: | ||
+ | <PHP> | ||
+ | <?php | ||
+ | // php 5.3 und später: | ||
+ | namespace Vendor\Model; | ||
+ | |||
+ | class Foo | ||
+ | { | ||
+ | } | ||
+ | </ | ||
+ | <PHP> | ||
+ | <?php | ||
+ | // php 5.3 und später: | ||
+ | namespace Vendor\Model; | ||
+ | |||
+ | class FooInterface | ||
+ | { | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Klassen- Konstanten, Eigenschaften und Methoden ===== | ||
+ | Das Term ' | ||
+ | |||
+ | ==== Konstanten ==== | ||
+ | Klassenkonstanten MÜSSEN vollständig in Großbuchstaben deklariert werden. Der Unterstrich trennt einzelne Worte. | ||
+ | <PHP> | ||
+ | <?php | ||
+ | namespace Vendor\Model; | ||
+ | |||
+ | class Foo | ||
+ | { | ||
+ | const VERSION = ' | ||
+ | const DATE_APPROVED = ' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== Eigenschaften ==== | ||
+ | Dieser Leitfaden vermeidet absichtlich jede Empfehlung in Bezug auf die Verwendung von $**StudlyCaps**, | ||
+ | Welche Namenskonvention auch benutzt wird, sie SOLLTE konsistent in einem vertretbaren Rahmen angewendet werden. | ||
+ | |||
+ | :!: //Anpassung an WB:// Es MUSS durchgehend überall das **StudlyCaps** Format benutzt werden, wobei jedem Bezeichner ein Kleinbuchstabe vorangestellt wird, der den Datentyp der Eigenschaft beschreibt. Derzeit definiert sind folgende Zuweisungen: | ||
+ | >>' | ||
+ | |||
+ | <PHP> | ||
+ | $sItemName = ' | ||
+ | $iUserId | ||
+ | $fPrice | ||
+ | </ | ||
+ | |||
+ | ==== Methoden ==== | ||
+ | Methodennamen MÜSSEN in **camelCase()** deklariert werden. | ||
+ | |||
+ | |||
+ | --- // |