Les bonnes pratiques commencent par une bonne convention de nommage. Il n’y a pas de convention de nommage à proprement parler dans la programmation orienté objet en PHP. Plusieurs styles sont possibles :

  • CamelCase : tous les mots sont collés et commencent par une majuscule
  • lower camelCase : tous les mots sont collés et sont séparés par une majuscule
  • snake_case : tous les mots sont en minuscule et séparé par un underscore

La convention la plus communément admise est la PEAR Standard phpcs qui a influencé Zend et Synfoni.

Les noms commencent toujours par une lettre et peuvent comporter des chiffres (alphanumérique), jamais de tiret, d’espace, de signes accentués ou spéciaux.

Choix de la langue

Pour une plus grande portabilité on préfèrera l’anglais qui se prètera mieux à la convention camelCase grâce essentiellement à son absence d’accentuation et l’emploi modéré d’article de liaison.

Petit rappel des règles communément admise en Programmation Orienté Objet :

  • Les classes portent un nom décrivant un objet générique
    • ex : Vehicle au lieu de Car
  • Les attribus ou propriétés se nomment en fonction de ce qu’elles contiennent
    • ex : color, make, year
  • Les méthodes prennent le nom d’une action
    • ex : startVehicle, moveVehicle, runVehicle, stopVehicle
  • Les ascesseurs (getters) et mutateurs (setters) commencent par get ou set + NomDeLAttribut
    • ex : getColor, setColor

Au début …

Avant tout, on ouvre et on ferme les balises PHP de cette façon :


L’ouverture courte (<?) est fortement déconseillée.

Utilisation des guillemets simple ou double

Guillemets simple avec les chaîne de carractères simple.

$string = 'Chaîne de carractère simple sans variable';

Guillements double avec des chaînes comportant des guillements

$sql = "SELECT * FROM `maTable` WHERE `firstname`='Eve'";

Guillements double avec des chaînes comportant des variables

$salutation = "Hey $firstname !";

 

La concaténation

Elle s’effectue avec l’opérateur « . » (point) avec un espace de chaque côté pour un plus grande lisibilité.

$sql = "SELECT `id`, `date`, `name` FROM `users` "
     . "WHERE `date` BETWEEN '$date1' AND '$date2' "
     . "ORDER BY `date` DESC";

Les classes

Elles prennent toujours une majuscules. Quand elles sont composées de plusieurs mots ils sont reliés par un underscore et chaque mot débutent par une majuscule ex :

class Gestion_Utilisateur

Une seule classe par fichier

Les variables (attribu ou propriété dans une classe)

On préfère généralement ne pas utiliser « var » pour définir les variables que l’on déclare toujours en début de classe et avant la première methode. L’usage préferera l’emploi d’accesseur (getters) et de mutateur (setters) plutôt que de laisser des variables publiques.

publique (public) en minuscule avec une majuscule à chaque nom

public $vehicleSize;

protégée (protected) en minuscule avec une majuscule à chaque nom<

protected $ownerLicence;

privée (private) en minuscule avec une majuscule à chaque nom précédées d’un underscore « _ »

private $_placeOfBirth;

 

Les constantes

Toujours précédées de « const » en majuscule séparé par des underscores et sans $

CONST DB_PASS = '7f#5dR7g2D)f7';

 

Exactement de la même manière qu’avec define() dans un fichier de config.

define('DB_USER', 'testUser');

 

 

Fonctions et méthodes

Nomage des fichiers :

class.vehicle.php, vehicle.class.php

Si vous n’êtes pas tenu à un nommage particulier (Zend), du moment que le mot class est présent dans le nom du fichier, vous ne pourrez pas vous tromper avec des fichiers contenant des fonctions par exemple (vehicle.func.php).

Documentation

 

Commentaires précédents le code

/*
* Description courte du fichier
*
* Description longue du fichier
*
* PHP version 5
*
* @package PackageName
* @author Original Author &lt;author@example.com&gt;
* @copyright 1997-2005 The PHP Group
* @license http://www.php.net/license/3_01.txt PHP License 3.01
* @version SVN: $Id$
* @link http://pear.php.net/package/PackageName
*/

Voir la version complète de PEAR : http://pear.php.net/manual/en/standards.header.php

Exemple complet :

<?php
/*
* Description courte du fichier
*
* Description longue du fichier
*
* PHP version 5
*
* @package PackageName
* @author Original Author &lt;author@example.com&gt;
* @copyright 1997-2005 The PHP Group
* @license http://www.php.net/license/3_01.txt PHP License 3.01
* @version SVN: $Id$
* @link http://pear.php.net/package/PackageName
*/
class Vehicle
{
    private $_brand;
    private $_model;
    private $_builtYear;
    CONST ENGINE = 'motor oil';

    function setBrand($brandName)
    {
        $this->_brand = $brandName;
    }
}
?>