Dies ist eine alte Version des Dokuments!
Die Kodierrichtlinen auf dieser Seite sind großteils veraltet.
Zum Prüfen der Codingstyles wird Codesniffer verwendet.
Nähere Informationen hierzu sind auf folgender Seite zu finden:
Eine einheitliche Form der Namensgebung für Variablen, Konstanten und anderer Komponenten erleichter es dem Entwickler, den Code des anderen zu verstehen.
Alle Dateinamen haben die für ihren Dateityp bestimmte Endung.
So haben z.B. HTML Dateien die Endung .html oder PHP Dateien .php. Es gibt jedoch Datentypen
die eine eigene Schreibweise haben. Hier eine Aufzählung der wichtigsten:
Hierzu sind Endungen wie <name>.rdf.php oder <name>.js.php erlaubt.
Es sind nur alphanumerische Zeichen, Underscores und Trennstriche erlaubt.
Dateinamen dürfen keine Umlaute oder Sonderzeichen enthalten.
Beispiele für gültige Namen sind:
Alle Variablen müssen mit Kleinbuchstaben beginnen und der „camelCaps“ Namenskonventation folgen. Das bedeutet, wenn ein Variablenname aus mehereren Namen besteht muss der Anfangsbuchstabe von jedem neuen Wort großgeschrieben werden. Repräsentiert die Variable eine ID so wird die Endung ID mit _ angefügt.
Variablennamen sind so kurz und so verständlich wie möglich zu halten. Variablen wie $i und $j dürfen nur bei Loops verwendet werden.
Variablen in Klassen müssen immer so heissen wie sie in der Datenbank angelegt wurden.
$anzahlVariablen $datum $person_id
Pfade werden in Konstanten immer mit / beendet
define('SERVER_ROOT','http://www.technikum-wien.at/');
Session Variablen die nur ein bestimmtes Modul betreffen, werden folgendermaßen benannt:
[Modulname] / [Name der Variable]
Andere Session Variablen, die das ganze System betreffen werden ohne Modulnamen geschrieben.
$_SESSION['cms/menu'] $_SESSION['wawi/user'] $_SESSION['user']
Eine Session Variable wird immer klein geschrieben.
Funktionsnamen müssen immer mit einem Kleinbuchstaben beginnen. Wenn eine Funktion aus mehreren Namen besteht, muss der Anfangsbuchstabe von jedem neuen Wort grossgeschrieben werden. Funktionen und Methoden müssen so klar wie möglich bezeichnet werden, damit anhand des Funktionsnamen jeder versteht, wofür diese bestimmt sind. Optionale Übergabeparameter müssen immer mit null initialisiert werden. Hier ein paar Beispiele für gültige Funktionsnamen:
getAllDetailsFromBestellung() load() saveTags($tag, $visible=null)
Kommentare die nur eine Zeile lang sind sollen mit / / beginnen. Für Kommentare, die länger als eine Zeile sind gilt als Start die /* Zeichenfolge und als Beendigung */.
Kommentare mit # sind nicht erwünscht.
Jede Klasse muss im Minimum einen Docblock mit einer Beschreibung enthalten. Mit einem Docblock Kommentar bezeichnet man spezielle Kommentare, die sich automatisch generieren um PHP Abschnitte genauer zu kommentieren. Diese beginnen mit / * * und es können spezielle tags wie @param oder @return benutzt werden.
/** * Short description for class * * Long description for class (if any)... */
Jede Funktion oder Klassenmethode muss im Minimum einen Docblock mit folgenden Tags enthalten: Beschreibung, Parameter und Rückgabewerte.
/** * Short description for the function * * Long description for the function (if any)... * * @param array $array Description of array * @param string $string Description of string * @return boolean */
Jede Klassenvariable muss im Minimum einen Docblock oder normalen Kommentar enthalten welche den Typ der Variable ersichtlich macht. Wenn erforderlich kann dieser auch eine Beschreibung der Variablen enthalten:
/** * Variable Description * @var array */
/* * Copyright (C) 2015 fhcomplete.org * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307,USA. * * Authors: Vorname Nachname <email@technikum-wien.at> */
Zu beginn jedes Skriptes soll ganz oben der GNU Header eingefügt werden. Im Authors Block werden nur Programmierer erwähnt die das aktuelle File auch wirklich bearbeitet haben.
Ein String wird mit echo ausgegeben und sollte grundsätzlich mit einfachen Apostrophen (single quotes) abgegrenzt werden. Dies hat den Vorteil, dass PHP Code im String nicht ausgeführt wird und so z.B. HTML Ausgaben einfacher und schneller sind.
$message = 'Hello World'; echo '<div style="float: right;">'.$message.'</div>';
Um Blöcke zu gruppieren, können zusätzliche Klammern eingesetzt werden. Bei längeren Bedingungen werden alle Bedingungen untereinander dargestellt , um die Lesbarkeit zu erhöhen. Die öffnende geschweifte Klammer wird immer in die nächste separate Zeile geschrieben . Die abschließende geschweifte Klammer erhält eben- falls immer eine separate Zeile. Jeder Code innerhalb der geschweiften Klammern muss einen Tabulator (standardmäßig vier Leerzeichen) eingerückt werden.
if($user == 'Herbert') { echo 'Hallo Herbert'; } else { echo 'Falscher User'; }
Bei sehr kurzen if-else Konstrukten kann auch der dreifach konditionale Operator verwendet werden:
$sampleVar = isset($_GET['sampleVar']) ? $_GET['sampleVar'] : '';
Gibt es nur eine ausführende Zeile, so können die geschweiften Klammern auch weggelassen werden.
if($user == 'Herbert') echo 'Hallo Herbert'; else echo 'Falscher User';
Diskussion: echo 'bar' . $foo . 'baz'; oder echo 'bar'.$foo.'baz';
$qry = "SELECT * FROM public.tbl_person JOIN public.tbl_benutzer USING(person_id) WHERE person_id=".$db->db_add_param($person_id, FHC_INTEGER, false).';';
Boolean Attribute sind über die Datenbankklasse zu parsen um inkompatibilitäten mit verschiedenen DB-Systemen zu verhindern.
$aktiv = $db->db_parse_bool($row->aktiv);
HTML Attribute sollen generell mit doppelten Hochkomma umschlossen werden. Variablen die innerhalb des HTML-Codes ausgegeben werden sind mit der Funktion convert_html_chars zu escapen. Dies ist vorallem wichtig bei Strings die den Typ Text oder varchar in der Datenbank haben.
echo '<div style="float: right;">'.$basis->convert_html_chars($message).'</div>';
Nach Doppelpunkt bei Style Anweisungen sollte ein Leerzeichen stehen.
<?php /* Copyright (C) 2015 fhcomplete.org * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307,USA. * * Authors: Christian Paminger <christian.paminger@technikum-wien.at>, * */ require_once(dirname(__FILE__).'/basis_db.class.php'); /** * Klasse Zweck liest und manipuliert Daten aus bis.tbl_zweck */ class zweck extends basis_db { /** * True wenn neues Objekt, False wenn Objekt schon vorhanden * @var boolean */ public $new = true; /** * Zweck-Objekt Array * @var array */ public $result = array(); /** * Gibt alle Zweckbeschreibungen zurueck, bei Erfolg True * * @param integer $id Id die geladen warden soll, wenn keine id uebergeben wurde * @return boolean */ public function getAll($id = null) { return true; } } ?>