Notes pour bien coder en PHP

Les notes qui suivent sont un résumé du standard de programmation PHP de la web agency Les Editions Spylook. Le but visé est l’écriture de code PHP clair et facile à comprendre. 

1 – Noms de variables:

Utiliser des termes explicites, en minuscules, séparés par des "_".

database_server.

 

2 – Nom des fonctions:

Utiliser des verbes d’actions en relation avec le contexte, en minuscules, séparés par des "_". Utiliser un espace au lieu d’une tabulation entre le terme function et le nom de la fonction (certains éditeurs PHP, représentant graphiquement les composantes d’un script, gèrent mal la tabulation).

function authenticate_user( $user_name , $user_password ).

 

3 – Disposition du code PHP:

Utiliser toujours les accolades même pour des sections d’une ligne. Pour l’indentation utiliser des espaces car la tabulation n’est pas toujours bien rendue dans certains éditeurs de code PHP. Si l’éditeur le permet configurer l’indentation comme une chaîne composée de quatre espces blancs, au lieu d’une tabulation. Mettre des espaces autour des noms de variables, de leurs valeurs, et des opérateurs (comparaisons, calculs, etc.).

if ( $display_list  ==  1 )
{
    print ‘The program wants us to display the list.<br>’;
    foreach( $list_items as $k => $v )
    {
        print "$k corresponds to $v<br>";
    }
}

 

4 – Disposition du code SQL:

Mettre chaque opérateur SQL sur une seule ligne. Utiliser des majuscules pour les noms réservés de SQL. 

$user_authentication = "SELECT id
FROM users
WHERE username = '$user_name'
AND password = '$user_password'"

 

5 – Commentaires de fichiers:

Indiquer au début de chaque script les informations suivantes.

// +—————————————————————————————-+
// | PACKAGE: [nom du package]                                                                    |
// +—————————————————————————————-+
// | [Nom du script] [version du script]                                                             |
// | PURPOSE: [Buts du script]                                                                         |
// +—————————————————————————————-+
// | REQUIRES: [Scritps qui sont obligatoires (optionnel)]                                  |
// +—————————————————————————————-+
// | CODING STANDARD: Spylook Editions PHP coding standard 1.0                   |
// |                  http://www.spylookeditions.com/standard/                                |
// +—————————————————————————————-+
// | COMMENTS: [Commentaires plus généraux (optionnell)]                              |
// +—————————————————————————————-+
// | Copyright (c) [Année] [Compagnie]  <[Site Web]>                                     |
// | Developed by: [Liste des développeurs du script]                                        |
// +—————————————————————————————-+
// | LICENSE: [Information sur les droits d’utilisation du script]                           |
// +—————————————————————————————-+
// | For support concerning this program, contact [Email du support technique]    |
// +—————————————————————————————-+

Par exemple:

// +———————————————————————————–+
// | PACKAGE: Mediatheque                                                                      |
// +———————————————————————————–+
// | index.php version 2002-06-05 20:15 ET                                               |
// | PURPOSE: displays documents that are part of the mediatheque            |
// +———————————————————————————–+
// | REQUIRES: class mediatheque (mediatheque.php)                                |
// +———————————————————————————–+
// | CODING STANDARD: Spylook Editions PHP coding standard 1.0              |
// |                  http://www.spylookeditions.com/standard/                           |
// +———————————————————————————–+
// | COMMENTS: This program was developped for free for the Polyvalente   |
//  |           Hyacinthe-Delorme <http://tux.phd.cssh.qc.ca>                         |
// +———————————————————————————–+
// | Copyright (c) 2002 Crealabs  <www.crealabs.com>                              |
// | Developed by: Pierre-Luc Soucy                                                          |
// +———————————————————————————–+
// | 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 2 of the         |
// | License, or (at your option) any later version.                                       |
// +———————————————————————————–+
// | For support concerning this program, contact webmaster@crealabs.com  |
// +———————————————————————————–+

 

6 – Commentaires de fonctions:

Indiquer au dessus de chaque définition de fontion les informations suivantes.

/**
* [Description de ce que la fonction est sensée effectuée]
* @param [Nom du paramètre 1]                [Description du paramètre 1]
* @param [Nom du paramètre 2]                [Description du paramètre 2]
*
* @return [Type du paramètre retourné]      [Description du paramètre retourné]
*/

Par exemple:

/**
* Generate greeting for the user
* @param $username                the user username (e.g. jsmith)
* @param $user_full_name        the user full name (e.g. John Smith)
*
* @return string                        the message to be shown to the user
*/

 

7 – Commentaires divers:

Indiquer au dessus de chaque étape principale de votre scritp (affectation, condition, boucle, etc.) un message simple et clair, informant sur le nouvel état du script.

// required libraries/files
require "../../soapmode.chtml.lib.php";
require "convertisseurs.finances.soapmode.chtml.lib.php";
require "parpays.soapclient.lib.php";

// Try to get the rate returned by Par Pays (Currency Exchange Rate) Web Service method
$parPaysRate = parPays_soapclient( $country1 , $country2 );

// Check the correct type of the var $parPaysRate :
if ( !is_numeric( $parPaysRate ) )
{
    // Error : no rate for between these countries
    $amount = ‘Erreur!’;
    $converted_amount = ‘Taux inconnu!’;
}
else
{
    // Compute the converted amount
    $converted_amount = $parPaysRate * $amount;
}

// Set a title
$title = ‘Par-Pays’;

// Edit the handler page
$page = soapmode_header( $title );
$page .= parpays_handler_body( $country1 , $country2 , $amount , $converted_amount );
$page .= soapmode_footer();

// Display the handler page
print( $page );

// Stop the script
exit;

 

8 – De manière générale

Pour les chaînes de caractères utiliser par défaut les parenthèses simples.

$converted_amount = ‘Taux inconnu!’;

 

Pour les chaînes de caractères utiliser les parenthèses doubles si le nom d’une variable est indiquée.

$message = "Le taux une fois converti est de $converted_amount";


Pour les tableaux dont les index sont des chaînes de caractères utiliser les parenthèses simples.

$array[‘key’]

 

Pour les tableaux associatifs aligner les éléments, et mettre une indentation de plus à chaque nouveau sous-niveau.

$array_name = array( ‘element1’ => ‘value1’ ,
                                  ‘element2’ => ‘value2’ ,
                                  ‘element3’ => array( ‘sub_element1’ => ‘sub_value1’ ,
                                                                 ‘sub_element2 ‘=> ‘sub_value2’ ) ,
                                  ‘element4’ => ‘value4’ );

Advertisements

A propos arcturien

E.T being from Arcturus Star System... ;-)
Cet article a été publié dans Ordinateurs et Internet. Ajoutez ce permalien à vos favoris.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s