Originariamente inviato da whisher
Scusa un attimo ma perchè utilizzi static nella funzione ?
perche' evito di creare ed assegnare ogni volta 3 variabili che avranno sempre lo stesso valore
Originariamente inviato da whisher
e il return true o false ha senso solamente se utilizzi
spl_autoload_register (cioè perde la sua efficacia se rinomini
la funzione __autoload) sbaglio ?
non sbagli ... quella funzione l'ho scritta al volo mentre rispondevo al primo post ed include entrambi i casi ... ma diciamo che puoi riadattarla meglio cosi'
codice:
// __autoload
function __autoload($className){
static $classDir = 'classes/',
$classPrefix = '',
$classSuffix = '.class.php';
$classFile = $classDir.$classPrefix.$className.$classSuffix;
if(file_exists($classFile))
require $classFile;
else {
trigger_error("Unable to load class {$className}. File {$classFile} does not exist.", E_USER_ERROR);
}
}
// autoloader con spl
function yourPrefixAutoloader($className){
static $classDir = 'classes/',
$classPrefix = '',
$classSuffix = '.class.php';
$classFile = $classDir.$classPrefix.$className.$classSuffix;
$result = file_exists($classFile);
if($result)
require $classFile;
return $result;
}
spl_autoload_register('yourPrefixAutoloader');
nel secondo caso sara' di fatto la spl a preoccuparsi dell'eccezione. nel primo la generi tu.
Per concludere, la spl permette di gestire i files per cartelle, ergo l'organizzazione dei files puo' essere migliore.
codice:
function yourBasePrefixAutoloader($className){
static $classDir = 'classes/',
$classPrefix = '',
$classSuffix = '.class.php';
$classFile = $classDir.$classPrefix.$className.$classSuffix;
$result = file_exists($classFile);
if($result)
require $classFile;
return $result;
}
spl_autoload_register('yourBasePrefixAutoloader');
function yourDeepPrefixAutoloader($className){
static $classDir = 'classes/components/',
$classPrefix = '',
$classSuffix = '.class.php';
$classFile = $classDir.$classPrefix.$className.$classSuffix;
$result = file_exists($classFile);
if($result)
require $classFile;
return $result;
}
spl_autoload_register('yourDeepPrefixAutoloader');
... ma bisogna stare attenti a gerarchie e nomi classi ... se due classi hanno lo stesso nome si rischia solo di far casini ...