2012040909550961

I. Préface des normes

La normalisation n'est pas un style personnel particulier. Elle permet aux programmeurs de comprendre n'importe quel code et de saisir l'état du programme ; permet aux nouveaux venus de s'adapter rapidement à l'environnement ; évite aux personnes qui débutent en PHP de répéter sans cesse les mêmes erreurs ; et, dans un environnement de développement cohérent, réduit les risques d'erreur. Cette norme suit en grande partie le système technologique Java dans la plupart des applications, car le système technologique Java est devenu la norme industrielle pour la plupart des couches d'application informatique en raison de ses nombreux cas de succès. De plus, elle facilite la transition future de l'entreprise vers le système technologique Java.

II. Section de définition des noms

Nommage des variables locales

Utilisez des noms et des verbes anglais. Utilisez des majuscules comme séparateurs de mots, toutes les autres lettres étant en minuscules. La première lettre de chaque mot doit être en minuscule, et les traits de soulignement ne doivent pas être utilisés. Exemple :

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

Nommage des constantes globales

Utilisez des noms et des verbes anglais. Toutes les lettres doivent être en majuscules, avec des traits de soulignement séparant chaque mot. Exemple :

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

Nommage des variables de tableau

Utilisez des noms et des verbes anglais. Utilisez des majuscules comme séparateurs de mots, toutes les autres lettres étant en minuscules. La première lettre de chaque mot doit être en minuscule, et les traits de soulignement ne doivent pas être utilisés. Utilisez la chaîne "Array" comme suffixe. Exemple :

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

Nommage des variables statiques

Utilisez des noms et des verbes anglais. Utilisez des lettres majuscules comme séparateurs de mots, toutes les autres lettres étant en minuscules. La première lettre de chaque mot doit être en minuscule, et les traits de soulignement ne doivent pas être utilisés. Utilisez la chaîne "Static" comme suffixe. Exemple :

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

Nommage des variables d'objet

Utilisez le nom de la classe comme préfixe de la variable. Toutes les lettres doivent être en majuscules, avec la chaîne "_OBJECT" comme suffixe. Exemple :

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

Nommage des classes

Utilisez des noms anglais. Utilisez des lettres majuscules comme séparateurs de mots, toutes les autres lettres étant en minuscules. La première lettre du nom doit être en majuscule, et les traits de soulignement ne doivent pas être utilisés. Exemple :

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

Nommage des méthodes

Utilisez des noms et des verbes anglais. Utilisez des majuscules comme séparateurs de mots, toutes les autres lettres étant en minuscules. La première lettre de chaque mot doit être en minuscule, et les traits de soulignement ne doivent pas être utilisés. Exemple :

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

Nommage des paramètres dans les méthodes

Utilisez des noms et des verbes anglais. Utilisez des majuscules comme séparateurs de mots, toutes les autres lettres étant en minuscules. La première lettre de chaque mot doit être en minuscule, et les traits de soulignement ne doivent pas être utilisés. Exemple :

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

Nommage des propriétés de classe

Utilisez des noms et des verbes anglais. Utilisez des lettres majuscules comme séparateurs de mots, toutes les autres lettres étant en minuscules. La première lettre du mot.

Utilisez des majuscules et n'utilisez pas de traits de soulignement. Pour les propriétés de classe qui sont des variables d'objet, utilisez la chaîne "Object" comme suffixe. Exemple :

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

III. Section d'écriture de la syntaxe

Règles concernant les accolades {}

Placez les accolades sur la même colonne sous le mot-clé. Exemple :

if ( $condition )
{
    ...
}

N’utilisez pas ce style :

if ( $condition ) 
{
    ...
}

Règles d’indentation du code

Utilisez l’indentation par tabulation (touche TAB) ou quatre espaces. Si le niveau d’indentation est supérieur à quatre, veuillez repenser l’algorithme pour cette logique métier.

Règles relatives aux parenthèses ()

Ne placez pas les parenthèses collées aux mots-clés, aux noms de méthodes ou aux paramètres de méthode. Séparez-les par un espace. Exemple :

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

Comme des parenthèses collées à des mots-clés, etc., peuvent facilement être perçues comme une seule unité, n’utilisez pas le style suivant. Exemple :

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

Règles relatives à if .. else ...

Il est généralement préférable d’avoir un bloc else pour gérer les cas non traités ou inconnus. Même si l’instruction de traitement conditionnel ne contient qu’une seule instruction, les accolades {} doivent être utilisées. Exemple :

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

Évitez autant que possible l’utilisation suivante. Exemple :

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

Règles relatives à switch

Chaque bloc case doit se terminer par break, et default doit toujours être présent pour gérer les cas inconnus. Exemple :

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

Règles de positionnement des déclarations

Les blocs de code de déclaration doivent être alignés, et les variables doivent être initialisées lors de leur première utilisation. Exemple :

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

N'utilisez pas le style suivant. Exemple :

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

IV. Autres remarques

Toutes les méthodes de classe doivent avoir des valeurs de retour. À l'exception des méthodes qui renvoient simplement true ou false en raison de résultats simples, les autres méthodes doivent renvoyer des valeurs différentes.

Pour passer à l'étape suivante du flux de travail en vue d'un traitement ultérieur.

Dans les formulaires HTML, omettez systématiquement l'attribut name (name) du bouton de soumission.

Les noms des éléments dans les formulaires HTML doivent être cohérents avec les champs de la base de données.

Une instruction par ligne.

N'utilisez pas la méthode par défaut pour tester des valeurs non nulles ; vous devez tester explicitement. Exemple :

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

N'utilisez pas le style suivant. Exemple :

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

N'utilisez pas l'opérateur logique ternaire ? :, sauf pour l'affectation de variables. Exemple :

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

Utilisez uniformément <?php ?>, et il est interdit d'utiliser le format <? ?>.

Pour les variables de type get, post et session, elles doivent être définies et invoquées à l'aide de $_GET, $_POST et $_SESSION.

Utilisez autant que possible des guillemets simples '' au lieu des guillemets doubles "".

Après utilisation, les variables de tableau, les variables d'objet et les ensembles de résultats de requête doivent immédiatement libérer les ressources à l'aide de unset() ou free_result().

Un fichier PHP ne peut contenir qu'une seule définition de classe, avec le nom de la classe comme nom de fichier.

Les fichiers PHP ne doivent jamais contenir d'instructions HTML, et les fichiers HTML doivent éviter autant que possible les instructions PHP.

Les fichiers HTML doivent passer la certification de validation HTML4 du W3C (http://validator.w3.org/).

Si vous constatez que seuls quelques-uns de vos noms dans le programme peuvent correspondre à leurs éléments correspondants, veuillez repenser le système.

Avant de nommer une classe, sachez d'abord ce qu'elle est. Si vous ne pouvez toujours pas vous rappeler ce qu'est la classe à partir des indices fournis par le nom de la classe, alors votre conception n'est pas suffisamment bonne.

Les noms mixtes composés de plus de trois mots peuvent facilement prêter à confusion parmi les entités du système. Veuillez reconcevoir la classe.

Habituellement, chaque méthode n'effectue qu'une seule action ou transaction logique, donc leurs noms doivent clairement expliquer ce qu'elles font : utilisez checkForErrors() au lieu de errorCheck(), utilisez dumpDataToFile() au lieu de dataFile().

Cela fait des fonctions et des données des objets plus facilement distinguables.

V. Section des commentaires du programme

Commentaires de classe

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

Commentaires des méthodes de classe

/*
* 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()
{
    ...
}

Commentaires des propriétés de classe

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. Section Application de base de données

La conception de la base de données doit être conforme aux trois formes normales (sauf dans les cas où des exigences de haute vitesse extrêmement contraignantes s'appliquent, auquel cas des tables d'enregistrement séparées peuvent être envisagées).

Les noms de base de données doivent être composés de noms anglais en minuscules qui résument le contenu du projet.

Les noms des tables de données doivent être composés de noms anglais en minuscules pour les noms d'objets (correspondant autant que possible aux noms des classes métier du système).

Utilisez des traits de soulignement pour séparer les mots, en évitant d'éventuelles erreurs de casse lors du passage entre plateformes.

Les champs des tables de données doivent éviter les types de longueur variable tels que varchar et text. Les champs d'information temporelle doivent être stockés en utilisant le type unix timestamp.

Lors de l'interrogation des données, l'utilisation du caractère générique * est interdite afin d'éviter de consommer des ressources et d'accélérer le traitement. Essayez d'éviter d'utiliser des tables temporaires.

Lors de l'interrogation de données avec des jointures sur plusieurs tables, toutes les ressources doivent utiliser des noms complets, c'est-à-dire tableName.fieldName, plutôt que fieldName.

Les instructions SQL doivent être aussi conformes que possible à la norme ANSI92, et éviter d'utiliser les fonctionnalités étendues de SQL propres à une base de données.

Une fois le développement terminé, des index doivent être ajoutés à la partie condition (where) des instructions de requête SQL. Pour les requêtes correspondant à plusieurs conditions, un index composite doit être utilisé.

La composition de l'index doit correspondre à l'ordre des instructions conditionnelles de gauche à droite.

Il est strictement interdit d'ajouter des index à l'aveugle, pour éviter de ralentir la vitesse d'insertion des données, d'augmenter l'espace occupé et de ralentir la vitesse des requêtes.

Chaque fois qu'un changement structurel se produit dans la base de données (table), il doit être enregistré et sauvegardé ; la structure de la base de données et ses données doivent être sauvegardées régulièrement (dans un délai maximal de trois jours ouvrables).

1. Lorsque vous affectez une chaîne à une variable PHP, essayez d'utiliser des guillemets simples. Les guillemets simples sont beaucoup plus rapides.

2. Lorsque vous affectez une valeur à une variable PHP, si la valeur contient des variables, vous devez utiliser des guillemets doubles. Les guillemets doubles peuvent analyser automatiquement les variables, ce qui est bien plus pratique.

Exemple : $b=blue; $a="php$b"; echo $a; affiche phpblue (les guillemets simples et les guillemets doubles ont chacun leurs atouts)

3. Essayez d'utiliser des guillemets doubles en HTML. Peu importe sa longueur, ajoutez simplement des guillemets simples au début et à la fin lorsque vous l'intégrez dans PHP, n'ayez pas peur des erreurs.

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