7 01 2014
Lorsque l’on programme en POO en PHP sans framework et que l’on créé ses propres objets, on a tendance à empiler les « includes » en-tête des fichiers.
Heureusement, en PHP5, ils ont pensé à nous via la fonction « __autoload ».
Voici la syntaxe de base :
require_once $class_name . '.php';
}
Donc, en admettant que nous ayons dans la même page PHP, une instanciation d’une classe « User » et d’une autre « Access »
//require
require_once($_SERVER["DOCUMENT_ROOT"] . "/_class/class.user.php");
require_once($_SERVER["DOCUMENT_ROOT"] . "/_class/class.access.php");
$user = new User("PORTEKOI");
$access = new Access($user->id);
?>
Mais lorsque l’on a 4, 5 ou plus de classes à inclure, cela devient vite fastidieux.
En PHP 5, nous avons donc « __autoload » qui fonctionne de cette manière (je reprends l’exemple précédent) :
function __autoload($class_name) {
require_once($_SERVER["DOCUMENT_ROOT"] . '/_class/class.' . strtolower($class_name) . '.php');
}
$user = new User("PORTEKOI");
$access = new Access($user->id);
?>
Ce code fonctionnera.
En le sécurisant :
function __autoload($class_name) {
if(file_exists($_SERVER["DOCUMENT_ROOT"] . '/_class/class.' . strtolower($class_name) . '.php')) {
require_once($_SERVER["DOCUMENT_ROOT"] . '/_class/class.' . strtolower($class_name) . '.php');
} else {
throw new Exception("Impossible de charger $class_name.");
}
}
try {
$user = new User("PORTEKOI");
$access = new Access($user->id);
} catch (Exception $e) {
echo $e->getMessage(), "\n";
}
?>
Simple mais efficace.
Captcha simple mais efficace en PHP Formulaires de paiement pour Paypal
Toujours utile à conserver sous la main, effectivement !