2012040909550961

I. Vorwort zu den Standards

Standardisierung ist kein besonderer persönlicher Stil. Sie ermöglicht Programmierern, jeden Code zu verstehen und den Zustand des Programms zu erfassen; sie ermöglicht Neueinsteigern, sich schnell an die Umgebung anzupassen; sie verhindert, dass Personen, die neu in PHP sind, wiederholt dieselben Fehler machen; und in einer einheitlichen Entwicklungsumgebung verringert sie die Wahrscheinlichkeit von Fehlern. Dieser Standard folgt in den meisten Anwendungen weitgehend dem Java-Technologiesystem, da das Java-Technologiesystem aufgrund seiner vielen Erfolgsfälle zum Industriestandard für die meisten Schichten von Computeranwendungen geworden ist. Darüber hinaus erleichtert er dem Unternehmen den künftigen Übergang zum Java-Technologiesystem.

II. Abschnitt zur Namensdefinition

Benennung lokaler Variablen

Verwenden Sie englische Substantive und Verben. Verwenden Sie Großbuchstaben als Worttrenner, alle anderen Buchstaben in Kleinbuchstaben. Der erste Buchstabe jedes Wortes sollte kleingeschrieben werden, und Unterstriche sollten nicht verwendet werden. Beispiel:

$repeatCount = '';
$delUserSql  = '';

Benennung globaler Konstanten

Verwenden Sie englische Substantive und Verben. Alle Buchstaben sollten großgeschrieben werden, wobei Unterstriche die einzelnen Wörter trennen. Beispiel:

define( 'WEBSITE_NAME', '名称' );
define( 'WEBSITE_URL',  '地址' )

Benennung von Array-Variablen

Verwenden Sie englische Substantive und Verben. Verwenden Sie Großbuchstaben als Worttrenner, alle anderen Buchstaben in Kleinbuchstaben. Der erste Buchstabe jedes Wortes sollte kleingeschrieben werden, und Unterstriche sollten nicht verwendet werden. Verwenden Sie die Zeichenfolge "Array" als Suffix. Beispiel:

$scopeArray  = array();
$bookIdArray = array();

Benennung statischer Variablen

Verwenden Sie englische Substantive und Verben. Verwenden Sie Großbuchstaben als Worttrennzeichen, wobei alle anderen Buchstaben kleingeschrieben werden. Der erste Buchstabe jedes Wortes sollte kleingeschrieben werden, und Unterstriche sollten nicht verwendet werden. Verwenden Sie die Zeichenkette "Static" als Suffix. Beispiel:

function getDirectoryFile()
{
    static $fileArrayStatic = '';
    static $fileNumStatic   = '';
    ...
}

Benennung von Objektvariablen

Verwenden Sie den Klassennamen als Variablenpräfix. Alle Buchstaben sollten großgeschrieben werden, wobei die Zeichenkette "_OBJECT" als Suffix verwendet wird. Beispiel:

$USERACCOUNT_OBJECT   = new UserAccount();
$PAINTINGORDER_OBJECT = new PaintingOrder();

Klassennamen

Verwenden Sie englische Substantive. Verwenden Sie Großbuchstaben als Worttrennzeichen, wobei alle anderen Buchstaben kleingeschrieben werden. Der erste Buchstabe des Substantivs sollte großgeschrieben werden, und Unterstriche sollten nicht verwendet werden. Beispiel:

class UserAccount
{
    ...
}
class PaintingOrder
{
    ...
}

Methodenbenennung

Verwenden Sie englische Substantive und Verben. Verwenden Sie Großbuchstaben als Worttrenner, alle anderen Buchstaben in Kleinbuchstaben. Der erste Buchstabe jedes Wortes sollte kleingeschrieben werden, und Unterstriche sollten nicht verwendet werden. Beispiel:

class UserAccount
{
    function isAccountOk()
    {
        ...
    }
    function addAccount()
    {
        ...
    }
}

Parameterbenennung in Methoden

Verwenden Sie englische Substantive und Verben. Verwenden Sie Großbuchstaben als Worttrenner, alle anderen Buchstaben in Kleinbuchstaben. Der erste Buchstabe jedes Wortes sollte kleingeschrieben werden, und Unterstriche sollten nicht verwendet werden. Beispiel:

class UserAccount
{
    function isAccountOk( $accountName )
    {
        $this->accountName = $accountName;
        ...
    }
    function addAccount( $inputDataArray )
    {
        $this->inputArray = $inputDataArray;
        ...
    }
    var $accuntName = '';
    var $inputArray = '';
}

Benennung von Klasseneigenschaften

Verwenden Sie englische Substantive und Verben. Verwenden Sie Großbuchstaben als Worttrennzeichen, wobei alle anderen Buchstaben kleingeschrieben werden. Der erste Buchstabe des Wortes.

Verwenden Sie Großbuchstaben und keine Unterstriche. Verwenden Sie für Klasseneigenschaften, die Objektvariablen sind, die Zeichenkette "Object" als Suffix. Beispiel:

class UserAccount
{
    function IsAccountOk()
    {
        ...
    }
    function AddAccount()
    {
        ...
    }
    var $tableName      = '';
    var $databaseObject = '';
}

III. Abschnitt zur Syntaxschreibung

Regeln für geschweifte Klammern {}

Platzieren Sie die geschweiften Klammern in derselben Spalte unter dem Schlüsselwort. Beispiel:

if ( $condition )
{
    ...
}

Verwenden Sie diesen Stil nicht:

if ( $condition ) 
{
    ...
}

Regeln für die Code-Einrückung

Verwenden Sie Tabulator-Einrückung (TAB-Taste) oder vier Leerzeichen. Wenn die Einrückungsebene größer als vier ist, überarbeiten Sie bitte den Algorithmus für diese Geschäftslogik.

Regeln für Klammern ()

Setzen Sie Klammern nicht direkt an Schlüsselwörter, Methodennamen oder Methodenparameter. Trennen Sie sie mit einem Leerzeichen. Beispiel:

if ( $condition )
{
    ...
}
function addAccount( $inputDataArray )
{
    ...
}

Da Klammern, die direkt an Schlüsselwörter usw. angehängt sind, leicht als eine Einheit angesehen werden können, verwenden Sie den folgenden Stil nicht. Beispiel:

if ($condition) 
{
    ...
}
function addAccount($inputDataArray)
{
    ...
}

Regeln für if .. else ...

Es ist normalerweise am besten, einen else-Block zu haben, um nicht behandelte oder unbekannte andere Fälle zu behandeln. Selbst wenn die bedingte Verarbeitungsanweisung nur eine Anweisung enthält, müssen geschweifte Klammern {} verwendet werden. Beispiel:

if ( $condition1 )
{
    ...
}
else if ( $condition2 )
{
    ...
}
else
{
    ...
}

Vermeiden Sie die folgende Verwendung so weit wie möglich. Beispiel:

if ( $condition1 )
    ...
else
    ...

switch-Regeln

Jeder case-Block muss mit break enden, und default sollte immer vorhanden sein, um unbekannte Fälle zu behandeln. Beispiel:

switch( $condition )
{
    case $value1:
        ...
        break;
    case $value2:
        ...
        break;
    default:
        ...
        break;
}

Regeln zur Positionierung von Deklarationen

Deklarations-Codeblöcke müssen ausgerichtet sein, und Variablen müssen bei der ersten Verwendung initialisiert werden. Beispiel:

var $tableName      = '';
var $databaseObject = '';

Verwenden Sie nicht den folgenden Stil. Beispiel:

var $tableName;
var $accuntName = '';
var $databaseObject = '';

IV. Abschnitt „Weitere Hinweise“

Alle Klassenmethoden müssen Rückgabewerte haben. Außer bei Methoden, die aufgrund einfacher Ergebnisse einfach true oder false zurückgeben, sollten andere Methoden unterschiedliche Werte zurückgeben.

Um an den nächsten Schritt des Workflows zur weiteren Verarbeitung übergeben zu werden.

Setzen Sie in HTML-Formularen einheitlich das name-Attribut (name) der Submit-Schaltfläche nicht.

Die Elementnamen in HTML-Formularen sollten mit den Datenbankfeldern übereinstimmen.

Eine Anweisung pro Zeile.

Verwenden Sie nicht die Standardmethode, um Werte ungleich null zu testen; Sie müssen explizit testen. Beispiel:

if ( false != $this->IsAccountOk() )
{
    ...
}
else
{
    ...
}

Verwenden Sie nicht den folgenden Stil. Beispiel:

if ( $this->IsAccountOk() )
{
    ...
}
else
{
    ...
}

Verwenden Sie den ternären logischen Operator ? : nicht, außer bei der Zuweisung an Variablen. Beispiel:

$_GET['act']   = !empty( $_GET['act'] ) ? $_GET['act'] : 'v_login';

Verwenden Sie einheitlich <?php ?>, und die Verwendung des Formats <? ?> ist verboten.

Für Variablen vom Typ get, post und session müssen diese mit $_GET, $_POST und $_SESSION definiert und aufgerufen werden.

Verwenden Sie nach Möglichkeit einfache Anführungszeichen '' anstelle von doppelten Anführungszeichen "".

Nach der Verwendung müssen Array-Variablen, Objektvariablen und Ergebnismengen von Abfragen sofort Ressourcen mit unset() oder free_result() freigeben.

Eine PHP-Datei darf nur eine Klassendefinition enthalten, wobei der Klassenname als Dateiname dient.

PHP-Dateien dürfen niemals HTML-Anweisungen enthalten, und HTML-Dateien sollten PHP-Anweisungen nach Möglichkeit vermeiden.

HTML-Dateien müssen die W3C-HTML4-Validierungszertifizierung bestehen (http://validator.w3.org/).

Wenn Sie feststellen, dass nur wenige Ihrer Namen im Programm zu den ihnen entsprechenden Dingen passen, entwerfen Sie das System bitte neu.

Bevor Sie eine Klasse benennen, sollten Sie zunächst wissen, was sie ist. Wenn Sie anhand der Hinweise, die der Klassenname liefert, immer noch nicht erkennen können, was die Klasse ist, dann ist Ihr Design nicht gut genug.

Gemischte Namen, die aus mehr als drei Wörtern bestehen, können leicht Verwirrung unter den Entitäten im System stiften. Bitte entwerfen Sie die Klasse neu.

Normalerweise führt jede Methode nur eine logische Aktion oder Transaktion aus, daher sollten ihre Namen klar erklären, was sie tun: Verwenden Sie checkForErrors() anstelle von errorCheck(), verwenden Sie dumpDataToFile() anstelle von dataFile().

Dadurch werden Funktionen und Daten zu besser unterscheidbaren Objekten.

V. Abschnitt Programmkommentare

Klassenkommentare

/*
* Purpose:
* 作为通用接口访问数据库的类
* Class Name:
* Database
* Author:
* unixdotnetphpboke@163.com
* Modifications:
* 2004-08-18 09:15
* 添加db_insert_id()方法
* unixdotnetphpboke@163.com
* See: 参照说明
*/
class Database
{
    ……
}

Kommentare für Klassenmethoden

/*
* Purpose:
* 取得上一步数据库insert操作产生的id
* Method Name:
* getInsertId()
* Parameter:
* Return:
* int
* Author:
* unixdotnet phpboke@163.com
* Modifications:
* 2004-08-18 09:15
* 修改原因
* unixdotnet phpboke@163.com
* See: 参照说明
*/
function getInsertId()
{
    ...
}

Kommentare für Klasseneigenschaften

class Database
{
/*
* Purpose:
* 连接数据库所需的用户名
* Attribute Name:
* $databaseUserName
* Type: string
* Author:
* unixdotnet phpboke@163.com
* Modifications:
* 2004-08-18 09:15
* 修改原因
* unixdotnet phpboke@163.com
* See: 参照说明
*/
var $databaseUserName;
    ...
}

VI. Abschnitt Datenbankanwendung

Datenbankdesign muss den drei Normalformen entsprechen (außer wenn extrem anspruchsvolle Hochgeschwindigkeitsanforderungen gelten; in diesem Fall können separate Datensatztabellen in Betracht gezogen werden).

Datenbanknamen sollten aus kleingeschriebenen englischen Substantiven bestehen, die den Projektinhalt zusammenfassen.

Namen von Datentabellen sollten aus kleingeschriebenen englischen Substantiven für die Objektnamen bestehen (so weit wie möglich entsprechend den Business-Klassennamen im System).

Verwenden Sie Unterstriche zur Trennung von Wörtern, um mögliche Groß-/Kleinschreibungsfehler beim plattformübergreifenden Einsatz zu vermeiden.

Felder von Datentabellen sollten variable Längentypen wie varchar und text vermeiden. Zeitinformationsfelder sollten mit dem Unix-Zeitstempel-Typ gespeichert werden.

Bei Datenabfragen ist die Verwendung des *-Platzhalters verboten, um Ressourcenverbrauch zu vermeiden und die Verarbeitung zu beschleunigen. Die Verwendung temporärer Tabellen sollte vermieden werden.

Bei Datenabfragen mit Joins über mehrere Tabellen sollten alle Ressourcen vollständige Namen verwenden, d. h. tableName.fieldName statt fieldName.

SQL-Anweisungen sollten möglichst dem ANSI92-Standard entsprechen und die Verwendung datenbankspezifischer SQL-Erweiterungen vermeiden.

Nach Abschluss der Entwicklung müssen Indizes zum Bedingungsteil (where) von SQL-Abfrageanweisungen hinzugefügt werden. Für Abfragen, die mehrere Bedingungen erfüllen, sollte ein zusammengesetzter Index verwendet werden.

Die Zusammensetzung des Index sollte von links nach rechts mit der Reihenfolge der Bedingungsanweisungen übereinstimmen.

Es ist strikt verboten, blind Indizes hinzuzufügen, um zu vermeiden, dass die Dateneinfügegeschwindigkeit verlangsamt, der belegte Speicherplatz vergrößert und die Abfragegeschwindigkeit verlangsamt wird.

Immer wenn eine strukturelle Änderung in der Datenbank (Tabelle) auftritt, muss sie registriert und gespeichert werden; die Datenbankstruktur und ihre Daten müssen regelmäßig gesichert werden (innerhalb von höchstens drei Arbeitstagen).

1. Wenn Sie einer PHP-Variablen eine Zeichenkette zuweisen, verwenden Sie nach Möglichkeit einfache Anführungszeichen. Einfache Anführungszeichen sind viel schneller.

2. Wenn Sie einer PHP-Variablen einen Wert zuweisen und der Wert Variablen enthält, müssen Sie doppelte Anführungszeichen verwenden. Doppelte Anführungszeichen können Variablen automatisch analysieren, was viel bequemer ist.

Beispiel: $b=blue; $a="php$b"; echo $a; gibt phpblue aus (einfache Anführungszeichen und doppelte Anführungszeichen haben jeweils ihre Stärken).

3. Versuchen Sie, in HTML doppelte Anführungszeichen zu verwenden. Egal wie lang es ist, setzen Sie beim Einfügen in PHP einfach am Anfang und am Ende einfache Anführungszeichen, haben Sie keine Angst vor Fehlern.

Original: http://www.phpboke.com/php-standard.html