Benutzer-Werkzeuge

Webseiten-Werkzeuge


dev:all:psr:psr-2

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
dev:all:psr-2de [13.08.2014 16:04] – [Closures] Manuela v.d.Deckendev:all:psr:psr-2 [31.08.2023 01:38] (aktuell) Manuela v.d.Decken
Zeile 1: Zeile 1:
 [size=10]im englischen Original von [[http://www.php-fig.org/psr/psr-2/|PHP-FIG PSR-2]][/size] [size=10]im englischen Original von [[http://www.php-fig.org/psr/psr-2/|PHP-FIG PSR-2]][/size]
 ====== Coding Style Guide ====== ====== Coding Style Guide ======
-Diese Anleitung verlängert und erweitert den Basis-Standard [[dev:all:psr-1de|PSR-1]].+Diese Anleitung verlängert und erweitert den Basis-Standard [[dev:all:psr:psr-1|PSR-1]].
  
-Das Ziel dieser Anleitung ist es, dafür zu sorgen dass Code unterschiedlicher Autoren ohne Probleme geleseb und verglichen werden kann. +Das Ziel dieser Anleitung ist es, dafür zu sorgen dass Code unterschiedlicher Autoren ohne Probleme gelesen und verglichen werden kann. 
 Erreicht wird dieses Ziel durch einen gemeinsamen Satz an Regeln und Erwartungen an das Format von PHP-Code. Erreicht wird dieses Ziel durch einen gemeinsamen Satz an Regeln und Erwartungen an das Format von PHP-Code.
  
 ===== Übersicht ===== ===== Übersicht =====
-  * Der Code MUSS [[dev:all:psr-1de|PSR-1]] folgen.+  * Der Code MUSS [[dev:all:psr:psr-1|PSR-1]] folgen.
   * Der Code MUSS 4 Leerzeichen für Einzüge benutzen aber keine Tabulatoren.   * Der Code MUSS 4 Leerzeichen für Einzüge benutzen aber keine Tabulatoren.
-  * Es DARF NICHT ein festes Limit der Zeilenlängen geben. Das Soft-Limit MUSS bei 120 Zeichen liegen und Zeilen SOLLTEN max 80 Zeichen oder weniger haben. +  * Es DARF NICHT ein festes Limit für Zeilenlängen geben. Das Soft-Limit MUSS bei 120 Zeichen liegen und Zeilen SOLLTEN max 80 Zeichen oder weniger haben. 
-  * Es MUSS jeweils eine Leerzeile nach der Namensraum Deklaration und nach dem Block der **use** Deklarationen eingefügt werden.+  * Es MUSS jeweils eine Leerzeile nach der Namespace Deklaration und nach dem Block der **use** Deklarationen eingefügt werden.
   * Bei Klassen MÜSSEN öffnende, geschweifte Klammern in der nächsten Zeile und die schließenden Klammern MÜSSEN in der nächsten Zeile nach dem Klassenkörper stehen.   * Bei Klassen MÜSSEN öffnende, geschweifte Klammern in der nächsten Zeile und die schließenden Klammern MÜSSEN in der nächsten Zeile nach dem Klassenkörper stehen.
   * Bei Methoden MÜSSEN öffnende, geschweifte Klammern in der nächsten Zeile und die schließenden Klammern MÜSSEN in der nächsten Zeile nach dem Methodenkörper stehen.   * Bei Methoden MÜSSEN öffnende, geschweifte Klammern in der nächsten Zeile und die schließenden Klammern MÜSSEN in der nächsten Zeile nach dem Methodenkörper stehen.
Zeile 20: Zeile 20:
 ==== Beispiel ==== ==== Beispiel ====
 Für einen schnelleren Überblick umfasst dieses Beispiel einige der obigen Regeln. Für einen schnelleren Überblick umfasst dieses Beispiel einige der obigen Regeln.
-<PHP>+<code php>
 <?php <?php
 namespace Vendor\Package; namespace Vendor\Package;
Zeile 46: Zeile 46:
     }     }
 } }
-</PHP>+</code>
  
 ===== Allgemein ===== ===== Allgemein =====
 ==== Basic Coding Standard ==== ==== Basic Coding Standard ====
-Der Code MUSS allen in [[dev:all:psr-1de|PSR-1]] aufgezeigten Regeln folgen.+Der Code MUSS allen in [[dev:all:psr:psr-1|PSR-1]] aufgezeigten Regeln folgen.
  
 ==== Dateien ==== ==== Dateien ====
Zeile 67: Zeile 67:
 ==== Einzüge, Einrückungen ==== ==== Einzüge, Einrückungen ====
 Code MUSS eine Einzugsweite von 4 Leerzeichen und DARF NICHT Tabulatoren für Einzüge nutzen. Code MUSS eine Einzugsweite von 4 Leerzeichen und DARF NICHT Tabulatoren für Einzüge nutzen.
-<blockquote>:!: Die ausnahmslose Benutzung von Leerzeichen ohen Vermischung mit Tabulatoren, hilft Probleme mit diffs, patches, history und Anmerkungen zu vermeiden. Die Benutzung von Leerzeichen macht es ebenso einfacher, feiner abgestufte Einzüge für Untereinzüge einzusetzen.</blockquote>+<blockquote>:!: Die ausnahmslose Benutzung von Leerzeichen ohne Vermischung mit Tabulatoren, hilft Probleme mit diffs, patches, history und Anmerkungen zu vermeiden. Die Benutzung von Leerzeichen macht es ebenso einfacher, feiner abgestufte Einzüge für Untereinzüge einzusetzen.</blockquote>
  
 ==== Schlüsselwörter und True/False/Null ==== ==== Schlüsselwörter und True/False/Null ====
Zeile 74: Zeile 74:
  
 ===== Namensräume und USE-Deklarationen ===== ===== Namensräume und USE-Deklarationen =====
-  * Wenn vorhanden, dann MUSS eine Leerzeile nach der Namensraum-Deklaration sein. +  * Wenn vorhanden, dann MUSS eine Leerzeile nach der Namespace Deklaration sein. 
-  * Wenn vorhanden, dann MÜSSEN alle **use** Deklarationen nach der Namensraum Deklaration eingefügt werden.+  * Wenn vorhanden, dann MÜSSEN alle **use** Deklarationen nach der Namespace Deklaration eingefügt werden.
   * Es DARF NICHT mehr als ein **use** Schlüsselwort pro Deklaration benutzt werden.   * Es DARF NICHT mehr als ein **use** Schlüsselwort pro Deklaration benutzt werden.
   * Es MUSS eine Leerzeile nach dem **use** Deklarationsblock eingefügt werden.   * Es MUSS eine Leerzeile nach dem **use** Deklarationsblock eingefügt werden.
 Beispiel Beispiel
-<PHP>+<code php>
 <?php <?php
 namespace Vendor\Package; namespace Vendor\Package;
Zeile 88: Zeile 88:
  
 // ... additional PHP code ... // ... additional PHP code ...
-</PHP>+</code>
  
 ===== Klassen, Eigenschaften und Methoden ===== ===== Klassen, Eigenschaften und Methoden =====
Zeile 97: Zeile 97:
  
 Die öffnende, geschweifte Klammer für die Klasse MUSS alleine in der nächsten freien Zeile stehen. Die zugehörende schließende Klammer exakt darunter in der ersten freien Zeile nach dem Klassenkörper. Die öffnende, geschweifte Klammer für die Klasse MUSS alleine in der nächsten freien Zeile stehen. Die zugehörende schließende Klammer exakt darunter in der ersten freien Zeile nach dem Klassenkörper.
-<PHP>+<code php>
 <?php <?php
 namespace Vendor\Package; namespace Vendor\Package;
Zeile 109: Zeile 109:
     // constants, properties, methods     // constants, properties, methods
 } }
-</PHP>+</code>
 Eine Liste von **implements** KANN über mehrere Zeilen gesplittet werden, wobei jede Unterzeile jeweils einen Schritt eingerückt wird.\\ Eine Liste von **implements** KANN über mehrere Zeilen gesplittet werden, wobei jede Unterzeile jeweils einen Schritt eingerückt wird.\\
 Wird das gemacht, dann MUSS der erste Eintrag in der nächsten Zeile sein und es DARF NICHT mehr als ein Interface pro Zeile angegeben werden. Wird das gemacht, dann MUSS der erste Eintrag in der nächsten Zeile sein und es DARF NICHT mehr als ein Interface pro Zeile angegeben werden.
-<PHP>+<code php>
 <?php <?php
 namespace Vendor\Package; namespace Vendor\Package;
Zeile 127: Zeile 127:
     // constants, properties, methods     // constants, properties, methods
 } }
-</PHP>+</code>
  
 ==== Eigenschaften ==== ==== Eigenschaften ====
Zeile 135: Zeile 135:
   * Eigenschaftennamen DÜRFEN NICHT zur Kennzeichnung von private oder protected einen _ als Vorzeichen erhalten.   * Eigenschaftennamen DÜRFEN NICHT zur Kennzeichnung von private oder protected einen _ als Vorzeichen erhalten.
 Beispiel einer Eigenschaftendeklaration: Beispiel einer Eigenschaftendeklaration:
-<PHP>+<code php>
 <?php <?php
 namespace Vendor\Package; namespace Vendor\Package;
Zeile 143: Zeile 143:
     public $foo = null;     public $foo = null;
 } }
-</PHP>+</code>
  
  
Zeile 154: Zeile 154:
  
 Beispiel einer Methodendeklaration. Beachten Sie die Anordnung von Klammern, Leerstellen, Kommata etc. Beispiel einer Methodendeklaration. Beachten Sie die Anordnung von Klammern, Leerstellen, Kommata etc.
-<PHP>+<code php>
 <?php <?php
 namespace Vendor\Package; namespace Vendor\Package;
Zeile 165: Zeile 165:
     }     }
 } }
-</PHP>+</code>
  
  
Zeile 174: Zeile 174:
   * In der Argumentenliste DARF NICHT eine Leerstelle vor einem Komma sein, aber es MUSS eine Leerstelle nach jedem Komma folgen.   * In der Argumentenliste DARF NICHT eine Leerstelle vor einem Komma sein, aber es MUSS eine Leerstelle nach jedem Komma folgen.
   * Methodenargumente mit Vorgabewerten(default) MÜSSEN an das Ende der Liste.   * Methodenargumente mit Vorgabewerten(default) MÜSSEN an das Ende der Liste.
-<PHP>+<code php>
 <?php <?php
 namespace Vendor\Package; namespace Vendor\Package;
Zeile 185: Zeile 185:
     }     }
 } }
-</PHP>+</code>
   * Argumentenlisten KÖNNEN über mehrere Zeilen gesplittet werden, wenn jede Unterzeile um eine Stufe eingerückt wird. Wenn so verfahren wird, MUSS das erste Element in die nächste Zeile und es DARF NICHT mehr als ein Argument je Zeile angegeben werden.   * Argumentenlisten KÖNNEN über mehrere Zeilen gesplittet werden, wenn jede Unterzeile um eine Stufe eingerückt wird. Wenn so verfahren wird, MUSS das erste Element in die nächste Zeile und es DARF NICHT mehr als ein Argument je Zeile angegeben werden.
   * Wenn eine Argumentenliste gesplittet wird, so MUSS die schließende Klammer und die öffnende geschweifte Klammer mit einer Leerstelle dazwischen in eine eigene Zeile.   * Wenn eine Argumentenliste gesplittet wird, so MUSS die schließende Klammer und die öffnende geschweifte Klammer mit einer Leerstelle dazwischen in eine eigene Zeile.
-<PHP>+<code php>
 <?php <?php
 namespace Vendor\Package; namespace Vendor\Package;
Zeile 202: Zeile 202:
     }     }
 } }
-</PHP>+</code>
  
  
Zeile 210: Zeile 210:
   * Wenn vorhanden, MÜSSEN die Deklarationen für **abstract** und **final** vor der Sichtbarkeitsdeklaration eingefügt werden.   * Wenn vorhanden, MÜSSEN die Deklarationen für **abstract** und **final** vor der Sichtbarkeitsdeklaration eingefügt werden.
   * Wenn vorhanden, MUSS die Deklarationen für **static** nach der Sichtbarkeitsdeklaration eingefügt werden.   * Wenn vorhanden, MUSS die Deklarationen für **static** nach der Sichtbarkeitsdeklaration eingefügt werden.
-<PHP>+<code php>
 <?php <?php
 namespace Vendor\Package; namespace Vendor\Package;
Zeile 225: Zeile 225:
     }     }
 } }
-</PHP>+</code>
  
  
Zeile 232: Zeile 232:
  
 ==== Methoden- und Funktionsaufrufe ==== ==== Methoden- und Funktionsaufrufe ====
-Bei einem Methoden- oder Funktionsaufruf DARF NICHT zwischen dem Methoden- oder Funktionsnamen eine Leerstelle sein; Es DARF NICHT eine Leerstelle nach der öffnenden Klammer und es DARF NICHT eine Leerstelle vor der schließenden Klammer eingefügt werden. In der Argumentenliste DARF NICHT vor einem Komma stehen und es MUSS eine Leerstelle nach jedem Komma eingefügt werden. +Bei einem Methoden- oder Funktionsaufruf DARF NICHT zwischen dem Methoden- oder Funktionsnamen und der öffnenden Klammer eine Leerstelle sein; Es DARF NICHT eine Leerstelle __nach__ der öffnenden Klammer und es DARF NICHT eine Leerstelle __vor__ der schließenden Klammer eingefügt werden. In der Argumentenliste DARF NICHT eine Leerstelle __vor__ einem Komma stehen und es MUSS eine Leerstelle __nach__ jedem Komma eingefügt werden. 
-<PHP>+<code php>
 bar(); bar();
 $foo->bar($arg1); $foo->bar($arg1);
 Foo::bar($arg2, $arg3); Foo::bar($arg2, $arg3);
-</PHP>+</code>
  
   * Argumentenlisten KÖNNEN über mehrere Zeilen gesplittet werden, wenn jede Unterzeile um eine Stufe eingerückt wird. Wenn so verfahren wird, MUSS das erste Element in die nächste Zeile und es DARF NICHT mehr als ein Argument je Zeile angegeben werden.   * Argumentenlisten KÖNNEN über mehrere Zeilen gesplittet werden, wenn jede Unterzeile um eine Stufe eingerückt wird. Wenn so verfahren wird, MUSS das erste Element in die nächste Zeile und es DARF NICHT mehr als ein Argument je Zeile angegeben werden.
   * Wenn eine Argumentenliste gesplittet wird, so MUSS die schließende Klammer und das Semikolon ohne eine Leerstelle dazwischen in eine eigene Zeile.   * Wenn eine Argumentenliste gesplittet wird, so MUSS die schließende Klammer und das Semikolon ohne eine Leerstelle dazwischen in eine eigene Zeile.
-<PHP>+<code php>
 $foo->bar( $foo->bar(
     $longArgument,     $longArgument,
Zeile 247: Zeile 247:
     $muchLongerArgument     $muchLongerArgument
 ); );
-</PHP>+</code>
  
 ===== Kontrollstrukturen ===== ===== Kontrollstrukturen =====
Zeile 263: Zeile 263:
 ==== if, elseif, else ==== ==== if, elseif, else ====
 Eine **if**-Struktur sieht wie nachfolgend aus. Beachten Sie die Plazierung von Klammern, Leerstellen und geschweiften Klammern. Die Schlüsselwörter **else** und **elseif** MÜSSEN sich mit einer Leerstelle Abstand auf der selben Zeile befinden, wie die schließende, geschweifte Klammer des vorhergehenden Strukturkörpers. Eine **if**-Struktur sieht wie nachfolgend aus. Beachten Sie die Plazierung von Klammern, Leerstellen und geschweiften Klammern. Die Schlüsselwörter **else** und **elseif** MÜSSEN sich mit einer Leerstelle Abstand auf der selben Zeile befinden, wie die schließende, geschweifte Klammer des vorhergehenden Strukturkörpers.
-<PHP>+<code php>
 if ($expr1) { if ($expr1) {
     // if body     // if body
Zeile 271: Zeile 271:
     // else body;     // else body;
 } }
-</PHP>+</code>
 Das Schlüsselwort **elseif** SOLLTE anstelle von **else if** so dass alle Schlüsselworte wie einzelne Worte aussehen. Das Schlüsselwort **elseif** SOLLTE anstelle von **else if** so dass alle Schlüsselworte wie einzelne Worte aussehen.
  
Zeile 278: Zeile 278:
 Eine **switch**-Struktur sieht wie nachfolgend aus. Beachten Sie die Plazierung von Klammern, Leerstellen und geschweiften Klammern. Eine **switch**-Struktur sieht wie nachfolgend aus. Beachten Sie die Plazierung von Klammern, Leerstellen und geschweiften Klammern.
 Das **case**-Statement MUSS eine Stufe ab **switch** eingerückt werden und das **break** Schlüsselwort (oder ein anderes, abschließendes Schlüsselwort) MUSS auf die selbe Ebene eingerückt werden, wie der **case**-Körper. Es MUSS ein Kommentar wie %%//%%// no break//  eingefügt werden, wenn ein 'durchfallen' zum nächsten **case** erwünscht ist. Das **case**-Statement MUSS eine Stufe ab **switch** eingerückt werden und das **break** Schlüsselwort (oder ein anderes, abschließendes Schlüsselwort) MUSS auf die selbe Ebene eingerückt werden, wie der **case**-Körper. Es MUSS ein Kommentar wie %%//%%// no break//  eingefügt werden, wenn ein 'durchfallen' zum nächsten **case** erwünscht ist.
-<PHP>+<code php>
 switch ($expr) { switch ($expr) {
     case 0:     case 0:
Zeile 295: Zeile 295:
         break;         break;
 } }
-</PHP>+</code>
  
  
Zeile 301: Zeile 301:
 ==== while, do while ==== ==== while, do while ====
 Ein **while**-Statement sieht wie nachfolgend aus. Beachten Sie die Plazierung von Klammern, Leerstellen und geschweiften Klammern. Ein **while**-Statement sieht wie nachfolgend aus. Beachten Sie die Plazierung von Klammern, Leerstellen und geschweiften Klammern.
-<PHP>+<code php>
 while ($expr) { while ($expr) {
     // structure body     // structure body
 } }
-</PHP>+</code>
 ebenso sieht ein **do while**-Statement wie nachfolgend aus. Beachten Sie die Plazierung von Klammern, Leerstellen und geschweiften Klammern. ebenso sieht ein **do while**-Statement wie nachfolgend aus. Beachten Sie die Plazierung von Klammern, Leerstellen und geschweiften Klammern.
-<PHP>+<code php>
 do { do {
     // structure body;     // structure body;
 } while ($expr); } while ($expr);
-</PHP>+</code>
  
  
Zeile 317: Zeile 317:
 ==== for ==== ==== for ====
 Ein **for**-Statement sieht wie nachfolgend aus. Beachten Sie die Plazierung von Klammern, Leerstellen und geschweiften Klammern.  Ein **for**-Statement sieht wie nachfolgend aus. Beachten Sie die Plazierung von Klammern, Leerstellen und geschweiften Klammern. 
-<PHP>+<code php>
 for ($i = 0; $i < 10; $i++) { for ($i = 0; $i < 10; $i++) {
     // for body     // for body
 } }
-</PHP>+</code>
  
  
 ==== foreach ==== ==== foreach ====
 Ein **foreach**-Statement sieht wie nachfolgend aus. Beachten Sie die Plazierung von Klammern, Leerstellen und geschweiften Klammern.  Ein **foreach**-Statement sieht wie nachfolgend aus. Beachten Sie die Plazierung von Klammern, Leerstellen und geschweiften Klammern. 
-<PHP>+<code php>
 foreach ($iterable as $key => $value) { foreach ($iterable as $key => $value) {
     // foreach body     // foreach body
 } }
-</PHP>+</code>
  
  
 ==== try, catch ==== ==== try, catch ====
 Ein **try catch**-Statement sieht wie nachfolgend aus. Beachten Sie die Plazierung von Klammern, Leerstellen und geschweiften Klammern.  Ein **try catch**-Statement sieht wie nachfolgend aus. Beachten Sie die Plazierung von Klammern, Leerstellen und geschweiften Klammern. 
-<PHP>+<code php>
 try { try {
     // try body     // try body
Zeile 343: Zeile 343:
     // catch body     // catch body
 } }
-</PHP>+</code>
  
  
Zeile 353: Zeile 353:
   * Closure Argumente mit Vorgabewerten (default) MÜSSEN an das Ende der Argumentenliste.   * Closure Argumente mit Vorgabewerten (default) MÜSSEN an das Ende der Argumentenliste.
 Eine Closure Deklaration sieht wie nachfolgend aus. Beachten Sie die Plazierung von Klammern, Leerstellen und geschweiften Klammern.  Eine Closure Deklaration sieht wie nachfolgend aus. Beachten Sie die Plazierung von Klammern, Leerstellen und geschweiften Klammern. 
-<PHP>+<code php>
 $closureWithArgs = function ($arg1, $arg2) { $closureWithArgs = function ($arg1, $arg2) {
     // body     // body
Zeile 361: Zeile 361:
     // body     // body
 }; };
-</PHP>+</code>
   * Argumenten- und Variablenlisten KÖNNEN über mehrere Zeilen gesplittet werden, wenn jede Unterzeile um eine Stufe eingerückt wird. Wenn so verfahren wird, MUSS das erste Element in die nächste Zeile und es DARF NICHT mehr als ein Argument oder Variable je Zeile angegeben werden.   * Argumenten- und Variablenlisten KÖNNEN über mehrere Zeilen gesplittet werden, wenn jede Unterzeile um eine Stufe eingerückt wird. Wenn so verfahren wird, MUSS das erste Element in die nächste Zeile und es DARF NICHT mehr als ein Argument oder Variable je Zeile angegeben werden.
   * Wenn eine Argumenten- oder Variablenliste gesplittet wird, so MUSS die schließende Klammer und die öffnende geschweifte Klammer mit einer Leerstelle dazwischen in eine eigene Zeile.   * Wenn eine Argumenten- oder Variablenliste gesplittet wird, so MUSS die schließende Klammer und die öffnende geschweifte Klammer mit einer Leerstelle dazwischen in eine eigene Zeile.
 Beispiele von Closures mit und ohne Argumentenliste und Variableliste die über mehrere Zeilen gesplittet sind. Beispiele von Closures mit und ohne Argumentenliste und Variableliste die über mehrere Zeilen gesplittet sind.
-<PHP>+<code php>
 $longArgs_noVars = function ( $longArgs_noVars = function (
     $longArgument,     $longArgument,
Zeile 409: Zeile 409:
    // body    // body
 }; };
-</PHP>+</code>
 Beachten Sie, dass die Formatierungsregeln auch greifen, wenn ein  Closure direkt in einem Funktions- oder Methodenaufruf als Argument eingesetzt ist. Beachten Sie, dass die Formatierungsregeln auch greifen, wenn ein  Closure direkt in einem Funktions- oder Methodenaufruf als Argument eingesetzt ist.
-<PHP>+<code php>
 $foo->bar( $foo->bar(
     $arg1,     $arg1,
Zeile 419: Zeile 419:
     $arg3     $arg3
 ); );
-</PHP> +</code>
- +
- --- //[[manuela@isteam.de|Manuela v.d.Decken]] 13.08.2014 18:01// +
- +
  
  
  
dev/all/psr/psr-2.1407945868.txt.gz · Zuletzt geändert: 03.06.2015 15:54 (Externe Bearbeitung)