Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
dev:all:psr-2de [13.08.2014 15:59] – [Closures] Manuela v.d.Decken | dev:all:psr:psr-2 [31.08.2023 01:32] – [Eigenschaften] Manuela v.d.Decken | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
[size=10]im englischen Original von [[http:// | [size=10]im englischen Original von [[http:// | ||
====== Coding Style Guide ====== | ====== Coding Style Guide ====== | ||
- | Diese Anleitung verlängert und erweitert den Basis-Standard [[dev: | + | 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 | + | Das Ziel dieser Anleitung ist es, dafür zu sorgen dass Code unterschiedlicher Autoren ohne Probleme |
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: | + | * 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 | + | * Es MUSS jeweils eine Leerzeile nach der Namespace |
* 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: | + | 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. | ||
- | < | + | < |
==== Schlüsselwörter und True/ | ==== Schlüsselwörter und True/ | ||
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 |
- | * Wenn vorhanden, dann MÜSSEN alle **use** Deklarationen nach der Namensraum | + | * Wenn vorhanden, dann MÜSSEN alle **use** Deklarationen nach der Namespace |
* 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 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 | + | Bei einem Methoden- oder Funktionsaufruf DARF NICHT zwischen dem Methoden- oder Funktionsnamen |
<PHP> | <PHP> | ||
bar(); | bar(); | ||
Zeile 410: | Zeile 410: | ||
}; | }; | ||
</ | </ | ||
+ | Beachten Sie, dass die Formatierungsregeln auch greifen, wenn ein Closure direkt in einem Funktions- oder Methodenaufruf als Argument eingesetzt ist. | ||
+ | < | ||
+ | $foo-> | ||
+ | $arg1, | ||
+ | function ($arg2) use ($var1) { | ||
+ | // body | ||
+ | }, | ||
+ | $arg3 | ||
+ | ); | ||
+ | </ | ||