|
Inhaltsverzeichnis
ProgrammierstandardsPHPStrukturell und inhaltlich angelehnt an den Zend Framework PHP Code Standard, hier werden nur von diesem abweichende Punkte genannt. PHP DateiformatierungAllgemein
Einrückung
NamenskonventionenKlassen
Code-StilKontrollstrukturen
Inline DokumentationFür die Inline-Dokumentation gibt es einen eigenen Artikel. E_STRICT-kompatibler Code
Sprachdateien
$var = Zend_Registry::get('translate')->_('translation_string');
Aufbau einer Sprachdatei
/** * Sprachdatei für das 'xyz'-Modul * * LICENSE: 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 3 of the License, or * 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, see http://www.gnu.org/licenses/gpl-3.0.html * * @copyright 2008 DSAo-Md * @license http://www.gnu.org/licenses/gpl-3.0.html GNU Public License * @version SVN: $Id$ */ $languages = array ( /** * module_controller_action * @see controllerController::actionAction() (falls vorhanden) */ // Kommentar zur Konstanten 'message1' 'module_controller_action_section_message1_long' => "Nachricht1", // Kommentar zur Konstanten 'message2' 'module_controller_action_section_message2' => "Nachricht2", /** * module_controller_action2 * @see controllerController::action2Action() (falls vorhanden) */ // Kommentar zur Konstanten 'message3' 'module_controller_action2_section_message3' => "Eine etwas längere Nachricht,\ndie sogar Zeilenumbrüche enthält.\n". "Eine solche Nachricht sollte nach max. 80 Zeichen umgebrochen, ". "und in der nächsten Zeile weitergeführt werden.", ); return $languages;
SQL
Achtung: Von der herkömmlichen Syntax bei fetchRow() und fetchAll() wird abgeraten, man kann stattdessen ein Objekt der Zend_Db_Select-Klasse übergeben. Für Details siehe ZF-Dokumentation. Benennung und Standardwerte
Anordnung der Tabellenfelder
Änderungen an TabellenstrukturWenn einer der Dateien unterhalb von /sql/ geändert wird, so sollte entweder eine Diff-Dateie oder eine Patch-Datei erstellt werden, damit Benutzer ohne Datenverluste die Datenbank aktualisieren können. Für das Erstellen der Patch-Dateien kann z.B. das Programm MySQL table patcher verwendet werden. SELECT
$row = $table->select()->where('some_col = ?', 1)->fetchRow(); echo $row->some_col;
$row = $table->find($value)->current(); echo $row->some_col;
$rowset = $table->select()->where('some_col = ?', 1)->fetchAll(); foreach ($rowset as $row) { echo $row->some_col; }
$values = array (1,4,8); // z.B. Benutzer mit den IDs 1,4 und 8 auslesen $rowset = $table->find($values); INSERT
$data = array( 'col1' => 'val1', 'col2' => 'val2', 'col3' => 'val3' ); $table->insert($data); UPDATE
$data = array ( 'someCol' => 2 ); $sqlWhere = $this->_getModel()->getAdapter()->quoteInto('id = ?', $id); // oder als Array $sqlWhere = array( $this->_getModel()->getAdapter()->quoteInto('id = ?', $id), $this->_getModel()->getAdapter()->quoteInto('otherCol = ?', $otherCol), ); $table->update($data, $sqlWhere); // Soll eine bereits geladene Zeile geändert werden, ist dies einfacher: $row->col = 5; $row->save(); DELETE* Zum Löschen eines Datensatzes wird folgendes Konstrukt bevorzugt: $sqlWhere = $this->_getModel()->getAdapter()->quoteInto('id = ?', $id); // oder als Array (s.o.) $table->delete($sqlWhere); // oder, sofern Zeile geladen wurde $row->delete(); Best practices
XHTMLEs wird XHTML 1.0 strict verwendet.
<!-- begin: module/controller/template.tpl -->
bzw. <!-- end: module/controller/template.tpl -->
CSSEs werden CSS 2 (deutsch) verwendet.
JavaScriptJavaScript (und auch Ajax) können benutzt werden, darf aber immer nur so eingesetzt werden, dass auch Benutzer, die JavaScript deaktiviert haben, das System noch ordnungsgemäß nutzen können.
FunktionenEvent-Handler
Response-Handler
SmartyAls Template Engine wird Smarty verwendet.
CodedokumentationIm Namensbereich Code befinden sich alle Code-Dokumentationen. Wer eine wichtige oder komplizierte Komponente implementiert, oder einen guten Weg gefunden hat, ein bestimmtes, häufig auftretendes Problem zu lösen, der kann eine Seite innerhalb dieser Hierarchie erstellen, um neuen Programmierern den Einstieg zu erleichtern. |