Contraintes de programmation

Pages mères

Une page mère est une page qui peut être appelée depuis un navigateur, par oppositions aux fichiers includes, par exemple forum/index.php.

Une page mère commence systématiquement par :

<?php
define ("DANS_LE_SITE", true);
include ("../includes/toujours.php");

L'inclusion d'un fichier (en PHP, HTML, JS…) commence systématiquement par un ”..” même si le fichier est juste à côté. Ainsi il est possible de copier-coller du code directement s'il est dans une page mère. De plus, le chemin reste bon, dans le cas où le fichier serait inclus depuis des fichiers appartenant à des dossiers différents.

Fichier includes

Les fichiers includes sont des fichiers contenant des fonctions ou une portion de script à inclure à partir d'un autre fichier include ou d'une page mère. Par exemple include/toujours.php.

Les fichiers includes commencent systématiquement pas :

<?php
if (!defined ("DANS_LE_SITE"))
{
	header ("location:../");
	die();
}

Si un client se rend à l'URL d'un fichier include, la suite du script ne sera pas exécuté et le client sera redirigé vers la page d'accueil. S'il est inclue depuis une page mère, ce script sera exécuté entièrement.

toujours.php

Cet include est inclu systématiquement en début de chaque page mère. Ce fichier comportera la liste des actions à exécuter lors du chargement de chaque page mères. Par exemple, la gestion des sessions, le comptage des pages visitées, l'entête HTTP…

Charset

La BDD, les scripts PHP ainsi que les transactions HTTP et SQL sont encodés dans le charset UTF-8. Les fichiers UTF-8 ne contiennent pas de BOM.

Accès à la base de données

L'accès à la BDD s’effectuera exclusivement avec PDO afin d'assurer une bonne compatibilité avec les différentes SGBD.

Règles de codage

Yoda conditions

Pour éviter toutes erreurs du style :

$grade = "visiteur";
if ($grade =! 'admin')
{
	echo "Vous etes visiteur";
}
else
{
	echo "Vous etes admin";
}

Le code sera écrit systématiquement sous la forme de Yoda condition, même si la lecture est plus difficile. Il s'agit, lors d'un test faisant intervenir une constante, de mettre la constante à gauche :

<code php> if ('admin' =! $grade) <code>

Ainsi, PHP révèle une erreur, et en y regardant de plus près on s’aperçoit que la position du '=' et le '!' sont inversés, chose que PHP ne révèle pas dans le premier cas. En effet, PHP affècte la valeur de !'admin' à la variable $grade et passe son chemin.

CamelCase

Les nom de variable PHP sont systématiquement écrite en CameCase.

Nom de fichier

Les noms de fichier ne comportent que des caractères parmi les suivants : a-z, A-Z, 0-9, . et _.

Profondeur des fichiers

Les fichiers PHP sont systématiquement à une profondeur de 1. C'est à dire dans un dossier, lui même placé à la racine. Cette structure permet de facilité la gestion des redirections et d'avoir des chemins relatifs identiques depuis n'importe quelle page. Les fichiers JS, JPG et autre peuvent être plus en profondeur.

Entête HTTP

L'entête HTTP est réécrite dans chaque fichier mère, même si ces entêtes sont similaires entre elles.