Code

Paheko suit les règles de :

  • PSR-1 pour le style du code
  • PSR-4 pour l'autoloading des classes

On suit également les règles de PSR-2 sauf :

  • Indentation : nous utilisons des tabulations, pas des espaces. Les espaces sont OK pour l'alignement (par exemple tableau PHP).
  • Pas de limite dure sur la largeur de ligne, utilisez la fonction retour à la ligne automatique de votre éditeur de code. C'est mieux d'essayer de limiter la longueur des lignes entre 80 et 120 colonnes, mais ce n'est pas obligatoire.
  • Opérateurs : utiliser && et || et non pas AND et OR.
  • Accolades pour les conditions :

    • Normalement l'accolade doit être sur la ligne suivante si le corps de la condition fait plus que 3-4 lignes, mais ce n'est pas obligatoire, juste un peu plus lisible.
    • Les else et elseif ne doivent pas être sur la même ligne que l'accolade fermant la condition précédente.

      if ($a === true) {
          [...]
      }
      else {
          [...]
      }
      
  • Utilisation de simples quotes ' pour définir les chaines de caractères, sauf si celles-ci contiennent des \n auquel cas utilisation de doubles quotes. Ex :

    $simple = 'Hello everyone';
    $multiline = "Hello\nThis is a beautiful day.";
    
  • Concaténation :

    • Avec un espace entre les points. Ex : $path = ROOT . '/' . $dir;.
    • Préférer l'usage de sprintf() pour le mélange de texte et de variables.
      Ex : $a = sprintf("Hello\nMembers of %s", $project) . "\n";.
  • Mot clef static à positionner avant la visibilité d'une méthode ou d'une propriété.

  • Préfixer de _ (underscore) les propriétés privées non-réfléchies des entités Garradin\Entity.

  • Typehint pour les arguments et valeurs de retour.

  • Nom des variables (hors propriétés donc) en snake_case.

  • Tableaux : déclaration en square-bracket syntax $my_empty_array = [];.

  • Requêtes SQL :

    • Mots clefs en majuscules et noms des colonnes en snake_case.
    • Utilisation des paramètres nommés.
  • Tables SQL :

    • Nom au pluriel pour les tables réfléchissant des entitées (ex : services).
  • En brindille, fonctions et variables en snake_case.

  • Les fichiers PHP peuvent finir avec une ligne vide, ou pas, dans tous les cas configurer son éditeur pour qu'il ne rajoute pas de ligne vide automatiquement.

L'indentation dans les fichiers HTML (y compris les templates Smartyer et les squelettes) doit être propre et lisible, et conforme à XHTML 5.

Langue

Le code ainsi que la structure de la base de données sont rédigés en anglais.
Les commentaires en français sont autorisés uniquement dans l'exemple de fichier de configuration /config.dist.php.