Non è possibile inserire il codice lì. È necessario aggiungere il registro SPL dopo la lezione. Se si voleva registrare una funzione all'interno della classe Manage
si potrebbe fare:
class Manage {
public static function autoload($class) {
include $class . '.class.php';
}
}
spl_autoload_register(array('Manage', 'autoload'));
Tuttavia, come avete dimostrato è possibile utilizzare una funzione anonima. Non hai nemmeno bisogno di una classe, in modo da poter semplicemente fare:
spl_autoload_register(function($class) {
include $class . '.class.php';
});
In entrambi i casi, la funzione specificata viene aggiunta ad un pool di funzioni che sono responsabili di caricamento automatico. La tua funzione viene aggiunta a questa lista (quindi se ce ne fossero già nella lista, la tua sarà l'ultima). Con questo, quando si fa qualcosa di simile:
UnloadedClass::someFunc('stuff');
PHP si renderà conto che UnloadedClass non è stato ancora dichiarato. Quindi itererà attraverso l'elenco delle funzioni di caricamento automatico SPL. Chiamerà ciascuna funzione con un argomento: 'UnloadedClass'
. Quindi, dopo che ogni funzione è stata chiamata, controlla se la classe esiste ancora. Se non lo fa continua fino a raggiungere la fine della lista. Se la classe non viene mai caricata, si verificherà un errore irreversibile che ti dice che la classe non esiste.
fonte
2012-06-21 03:51:37
Il codice è sbagliato. O metti 'sql_autoload_register' di classe' Manage' o mettilo in un metodo. – xdazz
@zerkms Cosa c'e 'oggi con gli OP e le loro bocche? E perché stanno sempre attaccando le mod? –
La prima cosa che dovresti fare è sintassi-error-check il tuo codice prima di postarlo qui. – hakre