Tout a l'heure je me suis dis que j'aurai bien voulu faire un include en fonction du SAPI dans lequel un script s'execute. Comme PHP est (presque) bien fait, il existe la fonction php_sapi_name qui retourne le nom du SAPI courant. Ce qui nous permet de faire quelque chose comme:
$sapi_include = dirname(__FILE__) . '/sapi/'.php_sapi_name().'.php';
$sapi_default = dirname(__FILE__) . '/sapi/default.php';
if (file_exists($sapi_include)) {
require_once $sapi_include;
} else if (file_exists($sapi_default)) {
require_once $sapi_default;
}
C'est pas très joli, mais ça fonctionne. Le gros avantage, c'est qu'on a des includes spécifiques au SAPI, et donc on aura par exemple, dans sapi/apache2handler.php:
header('Content-Type: text/html; charset=ISO-8859-15');
require_once 'libraries/Template.php';
session_start();
et dans sapi/cli.php:
Var_Dump::displayInit(array('display_mode' => 'text'));
Le problème, résolu par l'utilisation de sapi/default.php, était que faire un fichier par SAPI possible serait fastidieux (il faut connaitre le nom de tous les SAPI disponibles (bon ok c'est disponible ici mais cette liste n'a rien d'officiel) puis faire un fichier pour chaque.
Maintenant la question que je me (et vous) pose, c'est: y'a-t'il des effets secondaires que je n'aurai pas encore remarqué ?