Skip to content

Instantly share code, notes, and snippets.

@npotier
Last active January 27, 2020 15:18
Show Gist options
  • Save npotier/d5a13245ad9cd2e92fa9dec19baf0e9a to your computer and use it in GitHub Desktop.
Save npotier/d5a13245ad9cd2e92fa9dec19baf0e9a to your computer and use it in GitHub Desktop.
Traduction du PSR-1 en français
1. Présentation
Les fichiers DOIVENT utiliser uniquement les tags <?php et <?= .
Les fichiers DOIVENT utiliser uniquement un encodage UTF-8 sans BOM pour le code PHP.
Les fichiers PEUVENT soit déclarer des traitements (classes, fonctions, constantes, etc.) ou modifier l'environnement (par exemple générer du contenu, changer les paramètres .ini etc.) mais ne peuvent pas faire les deux.
Les Namespaces et les classes DOIVENT suivre un "autoloading" PSR: [PSR-0, PSR-4].
Les noms de classes DOIVENT être déclarés en StudlyCaps.
les constantes de classe DOIVENT être déclarées en majuscule avec des underscore en séparateurs.
les noms des méthodes DOIVENT être déclarées en camelCase.
2. Fichiers
2.1. Tags PHP
Le code PHP PEUT utiliser le tag <?php ?> ou le tag <?= ?> ; il ne DOIT pas utiliser d'autres variation de tag.
2.2. Encodage des caractères
Le code PHP DOIT utiliser uniquement un encodage UTF-8 sans BOM.
2.3. Effets de bord
A fichier PEUT déclarer de nouveaux traitements (classes, fonctions, constantes, etc.) et ne pas causer d'effet de bord, ou il PEUT exécuter une logique avec des effets de bords, mais ne PEUT PAS faire les deux.
La mention "effet de bord" signifie l'exécution d'un traitement qui n'est pas directement lié au code déclaré dans le fichier.
"Effet de bord" inclus mais n'est pas limité à: génération de contenu, utilisation explicite de require ou include, connexion à des services externes, modification des paramètres ini, génération d'erreur ou d'exception, modification de variables globales ou statiques, lecture ou écriture d'un fichier , etc.
Le code suivant est un exemple de fichier contenant à la fois déclaration et effet de bord; c'est à dire un exemple à éviter:
<?php
// Effet de bord, change les paramètres ini
ini_set('error_reporting', E_ALL);
// Effet de bord, charge un fichier
include "file.php";
// Effet de bord, génère du contenu
echo "<html>\n";
// déclaration
function foo()
{
// function body
}
Le code suivant est un exemple de fichier contenant des déclarations sans effet de bord; c'est à dire un exemple à suivre:
The following example is of a file that contains declarations without side effects; i.e., an example of what to emulate:
<?php
// déclaration
function foo()
{
// function body
}
// déclaration conditionnelle : ce *n'est pas* un effet de bord
if (! function_exists('bar')) {
function bar()
{
// function body
}
}
3. Namespace et nom des classes
Les Namespaces et les classes DOIVENT suivre un "autoloading" PSR: [PSR-0, PSR-4].
Cela signifie que chaque classe est dans son propre fichier, et se situe dans un namespace d'au moins un niveau : le niveau du vendor.
Les noms des classes DOIVENT être déclarés en StudlyCaps.
Le Code écrit pour PHP 5.3 et suivant DOIT utiliser les namespaces.
Par exemple:
<?php
// PHP 5.3 et suivant:
namespace Vendor\Model;
class Foo
{
}
Le code écrit pour PHP 5.2.x et précédent DOIT utiliser la convention de pseudo-namespace avec des préfixes Vendor_ dans les noms des classes.
<?php
// PHP 5.2.x et précédent
class Vendor_Model_Foo
{
}
4. Constantes de classes, propriétés et méthodes
Le terme "Classe" fait référence à toutes les classes, interfaces et traits.
4.1. Constantes
Les constantes de classes DOIVENT être déclarrées en majuscules avec des underscode comme sépérateurs. Par exemple:
<?php
namespace Vendor\Model;
class Foo
{
const VERSION = '1.0';
const DATE_APPROVED = '2012-06-01';
}
4.2. Propriétés
Ce guide évite intentionnellement toute recommandation à propos du nomage des propriétés ($StudlyCaps, $camelCase, ou $under_score)
Quelle que soit la convention utilisée elle DOIT être appliquée de façon constante dans un niveau raisonnable. Ce niveu peut être celui du vendor, du package, de la classe ou de la méthode.
4.3. Méthodes
les Méthodes DOIVENT être déclarées en camelCase().
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment