PHP

Bonnes pratiques PHP #1 un code propre qui respecte les standards

Premier article de la série bonnes pratiques PHP. On commence par les conventions de nommage.

Il n’y a pas qu’une seule et unique façon d’utiliser PHP. Il existe des bonnes pratiques en matière de développement web, des conventions ont été créées pour permettre de favoriser la collaboration entre les développeurs.

Cet article (et les suivants) présente différentes recommandations conseillées dans les standards PSR (PHP Standards Recommendations) concernant les variables, les fonctions, les constantes et les classes.

Tu découvriras ou re-découvriras au fil de cet article les conventions de nommage essentielles à une meilleure lisibilité de ton code.

Écriture des variables, fonctions, constantes et classes

Les noms des variables, des fonctions, des méthodes et des attributs sont écrits en camelCase.

$myVar = 3;
function sumAllNumbers($max) {...}

Les noms des clés dans un tableau sont écrits en snake_case. Le mot clé array n’est plus utilisé pour les tableaux.

$user = [
   'username' => 'monadresse@mail.com',
   'first_name' => 'John',
   'last_name' => 'Doe',
   'active' => 1
];

Les noms des constantes sont écrits en MAJUSCULE

define('LUCKY_NUMBER', 13);

Les noms des objets sont écrits en PascalCase. Chaque objet est stocké dans un fichier qui porte le même nom que l’objet et ne contient que cet objet.

class Hero
{
...
}

Mots-clés

En programmation orientée objet, la convention précise que la visibilité des propriétés et méthodes doit toujours être déclarée. Les mots-clés abstract et final doivent être déclarés avant la visibilité. Le mot-clé static lui doit être déclaré après la visibilité.

Les mots-clés true, false et null doivent toujours êtres écrits en minuscule.

Accolades et espaces

Selon la convention, les accolades en PHP sont à la ligne suivant la déclaration d’une classe, d’une fonction ou d’une méthode.

class Hero
{
    // Nom de mon Héros
    public string $name = '';
    
    // Constructeur
    public function __construct(string $name)
    {
        $this->name = $name;
    }
}

Les accolades en PHP sont à la suite, précédée d’un espace, pour un if, switch, while, foreach, match, etc. et sont obligatoires.

function calculSommeNombresPairs($maximum)
{
    $somme = 0;
    for ($i = 1; $i <= $maximum; $i++) {
        if ($i % 2 == 0) {
            $somme += $i;   
        }
    }

    return $somme;
}

On ne met pas d’espace entre le nom d’une fonction et l’appel de ses paramètres. Même chose à la création d’un objet. Seul echo fait exception.

$sum = calculSumPairNumbers(200);
echo $sum;

$hero = new Hero('Actarus');
echo $hero->getName();

Nommage explicite et utilisation de constantes

Les noms des variables, des fonctions, méthodes et classes doivent être le plus explicites possibles.

// Evitez absolument les abbréviations, qui laissent place à l'interprétation
// Pas bon :
$numUser;
// Bon :
$mobilePhoneNumberUser;

Utilisez des constantes pour réaliser des comparaisons de nombre ou de chaînes de caractères. Ce principe est très intéressant pour avoir un code beaucoup plus lisible. De plus, si vous faites une faute de frappe sur une constante, PHP déclenchera une erreur, alors que si vous faites une faute de frappe dans une chaîne de caractères, PHP ne déclenchera pas d’erreur :

// Je teste le statut d'une commande
if ($order['status'] == 1) {
    // Certaines instructions
}

if ($order['status'] == 2) {
    // D'autres instructions
}

// Préférez : (en ayant défini les constantes préalablement bien sûr)
if ($order['status'] == ORDER_STATE_OPEN) {
    // Certaines instructions pour une commande ouverte
}

if ($order['status'] == ORDER_STATE_PAYED) {
    // D'autres instructions pour une commande payée
}
// Cette fois-ci je teste la présence d'un langage dans un tableau de compétences.
if (in_array('html', $skills)) {
    // Certaines instructions
}

// Le code ci-dessous n'est pas bon mais ne génère pas d'erreur :
if (in_array('hmtl', $skills)) {
    // Certaines instructions
}

// Alors qu'avec une constante, disons LANGAGE_HTML, ce code génère une erreur :
if (in_array(LANGAGE_HMTL, $skills)) {
    // Certaines instructions
}

Va + loin

D’autres ressources pour bien comprendre et connaître les conventions liées à PHP :

Et on continue

Bonnes pratiques PHP #2 typage, protection et comparaison stricte


Qui a codé ce superbe contenu ?


Ta newsletter chaque mois

Corrigés, challenges, actualités, veille technique... aucun spam.