Tel PHP-Coding-Guidelines PHP Coding-Guidelines 1. Ausgabe Oktober 2012

Ähnliche Dokumente
PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden.

Einführung in Javadoc

Codingstandard. Softwareentwicklung Praktikum Stand:

Programmieren von Webinformationssystemen

1. Der Einstieg in Java. Was heißt Programmieren?

Java-Schulung Grundlagen

Hochschule Darmstadt Fachbereich Informatik

Programmieren von Webinformationssystemen

1. Zeilenendkommentare: // geklammerte Kommentare: /*... */ 3. Dokumentationskommentare: /**... */

Programmieren in Java

5.4 Klassen und Objekte

Einführung in ActionScript

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler

1. Der Einstieg in Java

Datenbankanwendungsprogrammierung Crashkurs Java

Modul 122 VBA Scribt.docx

Entwicklungsrichtlinien. 6. Mai 2015

3. Auflage. O Reillys Taschenbibliothek. C# 5.0 kurz & gut. Joseph Albahari & Ben Albahari O REILLY. Aktualisierung von Lars Schulten

PHP Programmierung. Seminarunterlage. Version 1.02 vom

Informatik I. Informatik I. 6.1 Programme. 6.2 Programme schreiben. 6.3 Programme starten. 6.4 Programme entwickeln. 6.1 Programme.

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Algorithmen und Datenstrukturen

Arrays Fortgeschrittene Verwendung

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Distributed Computing Group

VisualBasic - Variablen

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Tutorial: Eigene Module und Extensions entwickeln. version: 0.1 Author: Anja Beuth

Neue Features in C# 2.0

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Javakurs 2013 Objektorientierung

Oracle: Abstrakte Datentypen:

C++-Zusammenfassung. H. Schaudt. August 18, 2005

Tutorium Rechnerorganisation

Objective-C CheatSheet

IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Lua - Erste Schritte in der Programmierung

Zusammenfassung des Handzettels für Programmieren in C

2. Semester, 2. Prüfung, Lösung

Datenfelder (Arrays) Vektoren, Matrizen, Tabellen. Dr. Beatrice Amrhein

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Primitive Datentypen

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

PIWIN 1 Übung Blatt 5

Repetitorium Informatik (Java)

Nathan Burgener. Design by Contract. Modul SWE

Erreichbarkeit von Klassenelementen. Daten verstecken und kapseln

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

1. Übung zu "Numerik partieller Differentialgleichungen"

PHP 4. E i n e K u r z e i n f ü h r u n g. Vortragender: Kevin Bransdor Datum: Folie 1

Java Programmierung auf der Konsole / unter Eclipse

Codegeneratoren mit Xtend , A. Arnold

C Überlebenstraining

3 Objektorientierte Konzepte in Java

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung

Javakurs für Anfänger

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

Exceptions. Prof. Dr. Margarita Esponda SS M. Esponda-Argüero

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Deklarationen in C. Prof. Dr. Margarita Esponda

Studentische Lösung zum Übungsblatt Nr. 7

5. Tutorium zu Programmieren

Informatik I Eprog HS10

Programmiervorkurs. Organisation: Steffen Gebert, Alexander Wolff. Tutoren: Jürgen Zöller, Jonathan Stoll. Wintersemester 2012/2013

10. Klassen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

DAS EINSTEIGERSEMINAR PHP 5.3 LERNEN ÜBEN ANWENDEN. Oliver Leiss Jasmin Schmidt. 3. Auflage

Über den Autor 7. Teil I Los geht s mit Java für die Android-Entwicklung 25. Kapitel 1 Alles über Java und Android 27

Multimedia im Netz Wintersemester 2011/12

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Große Übung Praktische Informatik 1

Spec# Einführung. Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Primitive Datentypen. Dr. Wolfgang Süß Thorsten Schlachter

Objektorientierung: Klassen und Objekte

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Propädeutikum zur Programmierung

C# im Vergleich zu Java

jetzt lerne ich Der einfache Einstieg in Object Pascal Für alle Versionen bis einschließlich Delphi 2006 THOMAS BINZINGER

Vorkurs C++ Programmierung

3 Objektorientierte Konzepte in Java

II.1.1. Erste Schritte - 1 -

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Programmieren in Java

Vererbung & Schnittstellen in C#

Inhalt. Max Lini. ax. inie. Einleitung... VII

Selbststudium OOP Programmieren 1 - H1103 Felix Rohrer

Linux Tutorium. 12. Shellprogrammierung. Version vom :38:56

Objekt-Orientierte Programmierung

[E-1] Wolf, Jürgen: C von A bis Z. Galileo Computing, 3. Auflage,

Java Einführung Methoden in Klassen

Einführung in OO PHP. Jan Burkl Solution Consultant Zend Technologies. All rights reserved. Zend Technologies, Inc.

Transkript:

PHP Coding-Guidelines 1. Ausgabe Oktober 2012 Der Guideline beschreibt den verwendeten Coding-Stil von PHP. Dieser Stil wird umgesetzt, falls in einem Projekt vor Ort kein anderen Vereinbarungen über vorhandene Guidelines getroffen werden. Hinweis: Die Regeln orientieren sich an den offiziellen Coding-Guidelines des Zend-Frameworks, der Zend Framework Coding Standard für PHP wird unter der Adresse http://framework.zend.com/manual/1.12/de/coding-standard.html beschrieben. 1. Allgemeine Richtlinien 1.1 PHP Tag-Kennzeichnung Der Eröffnungs-Tag ist in der Form <?php zu schreiben. Das Schließen von PHP-Dokumenten mit dem -?>-Tag ist nicht erlaubt. Die Angabe wird für PHP nicht benötigt und es wird das Risiko ausgeschlossen, dass nach dem Schließen-Tag noch weitere Literale mitgespeichert werden. Nach dem Schließen-Tag verwendete Literale werden von PHP als Ausgabe betrachtet, dadurch können Fehler entstehen. PHP startet dann die Ausgabe, so können anschließend keine Header mehr gesendet werden. Permitted:?> 1.2. Anzahl der Leerzeichen Es werden 4 Leerzeichen als Einrückung verwendet. Tabbs dürfen nicht zur Formatierung eingesetzt werden. 1.3. Zeichen-Codierung Alle Datei-Inhalte werden mit UTF-8 gelesen, verarbeitet und gespeichert. Es wird zu keinem Zeitpunkt der Verarbeitung das Byte-Order-Mark verwendet. Weitere Infos zu BOM bietet z.b. der Wikipedia-Text unter http://de.wikipedia.org/wiki/byte_order_mark. 1

1.4. Maximale Zeilen-Länge Die maximale Zeichen-Länge darf 120 Zeichen nicht überschreiten, nach Möglichkeit werden im Höchstfall 80 Zeichen verwendet. 1.5. Zeilen-Abschluß Es wird dabei die Original-Zend-Vorgabe umgesetzt (Quelle: http://framework.zend.com/manual/1.12/de/coding-standard.php-file-formatting.html, 27.12.2012): Die Zeilenbegrenzung folgt der Konvention für Unix-Textdateien. Zeilen müssen mit einem einzelnen Zeilenvorschubzeichen (LF) enden. Zeilenvorschubzeichen werden durch eine ordinale 10, oder durch 0x0A (hexadezimal) dargestellt. Beachte: Benutze nicht den Wagenrücklauf (CR) wie in den Konventionen von Apples OS (0x0D) oder die Kombination aus Wagenrücklauf und Zeilenvorschub (CRLF) wie im Standard für das Windows OS (0x0D, 0x0A). 2. Namens-Konventionen 2.1 Klassen und Interfaces Klassen-Dateien werden mit Dateiname.class.php bezeichnet, Interfaces in der Form Interface.interface.class und andere PHP-Dateien mit Dateiname.php. Da in vielen Fällen Autoloader in Verbindung mit Namespaces verwendet werden, ist der Name der Interfaceund Klassen-Datei identisch mit dem Namen der jeweiligen Klasse bzw. dem Interface: namespace Foo\Bar class Test {... Führt zum Dateinamen: /Foo/Bar/Test.class.php Alle Datei-, Klassen- oder Interface-Namen dürfen nur alphanumerische Zeichen, Unterstrich und den Punkt enthalten, Leerzeichen sind verboten. 2

2.2. Funktionen und Methoden Der Funktions- bzw. Methoden-Name darf nur alphanumerische Zeichen enthalten und ist in der Camel-Case-Schreibweise zu realisieren: public function testoffoo () {. Setters und Getters sind mit mit setmethodenname bzw. getmethodenname zu benennen. 2.3. Variablen Die Bezeichnung von Variablen darf alphanumerische Zeichen enthalten, Nummern, Unterstiche oder andere speziellere Zeichen sind nicht erlaubt. Es wird ebenfalls die Camel- Case-Schreibweise verwendet. 2.4 Konstanten Kontanten dürfen wie Variablen nur alphanumerische Zeichen ohne Nummern enthalten. Da alle Zeichen groß zu schreiben sind, wird der Unterstrich als Trenner verwendet. Eine globale Definition mit Konstanten mit define ist verboten. namespace Foo\Bar class Test { const NAME_KONSTANTE = foo ; Alle Bezeichnungen wie z.b. für Variablen, Methoden oder Klassen besitzen einen möglichst aussagekräftiegn Namen, der seine Aufgabe möglichst gut beschreibt. 3. Code-Stil Die Konsistenz des Code-Stiles ist durchgängig zu verwenden, diese Vorgabe hat die höchste Priorität. 3

3.1 Deklaration und Zugriff auf Variablen und Arrays Variablen und Arrays müssen immer vor ihrer ersten Vernwendung deklariert werden. Beim Zugriff auf Eigenschaften ist bei Bedarf je nach Implementierung z.b. mit der isset-methode auf Variablen oder der sizeof-methode auf Arrays die Werte-Verfügbarkeit abzusichern. 3.2. Strings Ein String wird immer in Single-Quotes eingefasst, wenn es sich um einen einfachen Sring handelt und keine Escape-Sequencen enthalten sind. SQL-Statements werden mit Double- Quotes eingefasst, dadurch wird die Kennzeichnung von Werten des Typs string innerhalb des Statements vereinfacht, die nicht escaped werden müssen. Eine Variablen-Subsitution ist nicht gestattet, weil sie in Template-View-Ausgaben wie z.b. bei Magento-Templates für den Marker verwendet werden. Bei der Verbindung von Strings wird vor und hinter dem Punkt-Operator ein Leerzeichen geschrieben. Bei Strings übner mehrere Zeilen beginnt der Teilstring mit einem Punkt- Operator, der direkt unter dem Gleichheitszeichen der Zuweisung eingerückt wird. namespace Foo\Bar Var strtest = 'Ich bin ein Beipspiel-Text, Hallo Welt'. $strvariable. 'hier geht der Text weiter'; Die Variable vom Typ string ist mit den Anfangs-Literalen str gekennzeichnet wie z.b. bei strnamestringvariable. 3.3 Numbers Der Varibale vom Typ int ist mit int am Anfang zu benennen, wie z.b. bei intnamevariable. Zwischen allen Opersatoren ist ein Leerzeichen einzufügen. 4

3.4 Arrays Bei numerischen Indexes beginnt der erste Schlüsselwert mit null oder 1. Komma-separierte Werte enthalten jeweils nach dem Integer-Schlüsselwert oder dem in einfachen Anführungszeichen eingeschlossenen String-Wert ein Leerzeichen. Mehrzeilige oder verschachtelte Arrays über mehrere Dimensionen sind einzurücken. Beispiele: $array = array('str1', 'str2', 1, 2, 3); $array = array( 1, 2, 3, $a, $b, $c, 200, $d, 400 ); $array = array( 'first' => 'firstvalue', 'second' => 'secondvalue' ); 3.5 Klassen- und Konstanten-Eigenschaften Getter- oder Setter-Methoden werden dann verwendet, wenn die entsprechende Injection sinnvoll ist oder keine Constructor-Methode verwendet wird. In anderen Fällen sind Klassen- Eigenschaften über den Konstruktor zu initialisieren. Bei der Deklaration ist die Sichtbarkeit der Eigenschaften anzugeben. 3.6. Methoden und Funktionen Auch Methoden werden mit der Angabe der Sichbarkeit deklariert. Für den gesamten Code wird der K&R-Stil für die Klammerung verwendet. Vor einer sich öffnenden geschweiften Klammer wird ein Leerzeichen gesetzt. class Foo { protected $myvar; const FOO = 'undefined'; 5

public function getmyvar() { return $this->myvar; public function helloworld() {. Für die Übergabe-Parameter von Ararys und Objekten sind Type-Hints zu verwenden. 3.7 Kontroll-Staements Auch für Kontroll-Strukturen wird durchgängig der K&R-Stil verwendet. Ber der Verwendung von logischen Schritten inenrhalb einer Schleife oder Switch-Konstrukt ist mit -breakabzusichern. Tiefer verschachtelte Schleifen sind zu vermeiden. 4. Dokumentation Die Dokumentation muss mit phpdocumentator kompatibel sein, für weitere Dokumentationen können zusätzlich mehrzeilige oder einzeilige Kommentare verwendet werden, wenn sie einen Mehrwert bieten. 4.1. Klassen Die Klasse ist mit einem Doc-Block ausgezeichnet, der mindestens die Tags @author zur Autorenangabe, @package zur Paketangabe und @version zur Ausgabe der aktuellen Klassen-Version enthält. Vor der Angabe der Tags erfolgt eine Kurzbeschreibung über die Funktionalität der Klasse. /* * Ich bin ein Beschreibungs-Text * * @package Paketname * @author Mustermann, Max * @version v 1.2 2011-04-29 04:08:27 */ 6

class Foo {. 4.2. Methoden und Funktionen Methoden und Funktionen enthalten in ihrer Dokumentation mindestens: Alle Argumente Eine kurze Beschreibung darüber, was die Funktion macht Die Auflistung aller möglichen return-werte /** * returns the foo-object * @param string $type - the type to use * @param array $values - creating the object * @throws \Foo\Exception\Bar * @return \Foo\foo- the created foo-object */ public function getfoo($type, $values) { try { $foo = new \Foo\fooObj($type, $values); catch (Exception $e) { throw new \Foo\Exception\Bar($e->getMessage()); return $foo; 7