[Php] Autoload file and class
Par JcDenis le samedi 13 septembre 2008, 12:00 - Programmation - Lien permanent
Une nouveauté de php5 est la fonction __autoload(), très utile du point de vu codage elle permet de supprimer les problemes d'inclusion de fichiers classes un peu n'importe ou dans vos codes.
Par exemple avec cette fonction vous rassemblez au debut de votre page principale toutes les inclusions de fichiers de classes et ces fichiers seront chargé automatiquement au moment ou vous en aurez besoin. (et ils ne seront pas chargé si vous ne les utilisez pas).
Voici des bouts de code qui rendront la chose plus comprehensible:
Mon fichier principal: index.php
@@<?php
- Liste de mes fichiers de classes
- Le tableau doit avoir comme clé le nom de class et comme valeur le nom de fichier
$__autoload = array(
'text' => 'text.inc', 'lang' => 'lang.inc.php', 'timer' => 'timer.inc.php'
);
- Function de chargement automatique
function __autoload($name) {
require_once dirname(FILE).'/anywhere/' . $__autoload$name; }
}
- inclusion d'un fichier quelconque
include('plop.php');
?>@@
Un fichier secondaire: plop.php
@@<?
- Utilisation d'une classe (ici lang)
$malang = new lang('fr'); $str = $malang->get_blabla('blablabla');
- Utilisation d'une classe statique (ici text)
if (text::isString($str)) {
echo "$str is a string!";
}
?>@@
Ici on vois qu'il n'est pas necessaire d'ajouter: require_once (.../lang.php); Ceci est très pratique lorsqu'on travail sur un site avec beaucoup d'inclusion de fichiers avec des classes dont on ne se sert pas toujours.