PHP __autoload Conflict

April 30

PHP __autoload Conflict


PHP dà errori fatali quando gli utenti tentano di utilizzare una classe indefinita e non c'è una funzione __autoload propriamente chiamata a riempirlo. PHP conflitti autoload sorgono quando più di una funzione di caricamento automatico è definita al di fuori di una libreria PHP, non riescono a trovare le classi di riferimento o protocolli SOAP vengono utilizzati.

classi PHP

programmatori PHP possono collocare le classi utilizzate dal programma in un file directory separata. Questo permette ai programmatori di aggiungere nuove classi in fase di esecuzione. esistono classi separate per i diversi tipi di dati, quali i dipendenti, numeri di conto dei clienti e pezzi di apparecchiature registrati in un database. Ogni file di classe termina con .class.php. Una directory apparecchiature potrebbe essere chiamato equipment.class.php. La dichiarazione require_once () consente il file di classe per essere utilizzato da script. Invece di richiedere ai programmatori di inserire più istruzioni all'inizio di uno script per ogni tipo di classe, PHP permette di classe caricamento automatico.

errori caricamento automatico

Quando PHP non riconosce una classe, cerca per la funzione __autoload. Secondo "Core programmazione php," se esiste PHP chiama con un singolo parametro, che è il nome della classe perché PHP presuppone che la definizione di classe è memorizzata in un file che inizia con il nome della classe. Quando si utilizza una classe di studenti, PHP presuppone che il file class_student.php contiene la definizione della classe studente. Se il file è denominato class_fifthgrade.php invece, per esempio, lo script PHP non lo trovo e non riescono.

Nome classe Errori

La funzione di caricamento automatico funziona correttamente solo se la classe è definita più avanti nello script. Se la classe non è definita in seguito nel programma, la funzione autoload genererà errori. Se il file di classe non è presente, la funzione autoload fallirà. Utilizza le stringhe di fare riferimento alle classi in modo dinamico, invece di modifica o sostituzione del file di classe, mentre il processo viene eseguito. Aggiunta la funzione include () consente di PHP per creare una nuova classe e prevenire i conflitti.

PHP Caricamento automatico dei conflitti

La funzione __autoload può essere definito solo in un processo PHP. PHP conflitti caricamento automatico si verificano quando la funzione è definita più di una volta o modificato durante il processo. "PHP Objects, Patterns and Practice" suggerisce di utilizzare la funzione di spl_auotload_register per cambiare la funzione di caricamento automatico in modo dinamico. Un PHP Library o SPL standard consente agli utenti di definire e registrare più funzioni caricamento automatico senza violare la definizione autoload singola al processo regola. Ogni funzione autoload utilizzata nel processo deve essere dichiarata e registrata con l'SPL prima di utilizzare la dichiarazione require_once.

SOAP conflitti di estensione

protocolli SOAP definiscono il costrutto utilizzato per lo scambio di messaggi. PHP versione 5 ha un'estensione SOAP nativo. NuSOAP è un metodo orientato agli oggetti di generare messaggi. La versione 5 di PHP conflitti di estensione SOAP con la classe NuSOAP. Il conflitto viene risolto disattivando la versione di PHP estensione SOAP nativo 5 di.