Zend_Loader_Autoloader come funziona?

Salve a tutti!

Con il vostro aiuto vorrei capire alcune cose sul funzionamento della classe Zend_Loader_Autoloader.

Serve ad avere a disposizione nel nostro progetto, tutte le classi Zend "Quando vogliamo e dove vogliamo" senza dover fare l'include della classe nella pagina in cui c' bisogno di essa?

Basta inserire queste righe di codice:

require_once("Zend/Loader/Autoloader.php");

$autoloader = Zend_Loader_Autoloader::getInstance();

nella index (o cmq la prima pagina a cui accedo) e successivamente posso utilizzare in qualisiasi altra pagina le classi Zend??

Grazie in anticipo delle risposte!! ;)

inviato 5 anni fa
blow1986
X 0 X

Pi in generale, Zend_Loader_Autoloader fornisce un sistema unificato di caricamento automatico delle classi, non solo quelle dello Zend Framework.

Il sistema viene attivato dalla prima chiamata al metodo getInstance()

:bye:

risposto 5 anni fa
Gianni Tomasicchio
X 0 X

Ciao Gianni grazie per la risposta,

a questo punto corretto inserire nella pagina index.php

require_once("Zend/Loader/Autoloader.php");

$autoloader = Zend_Loader_Autoloader::getInstance();

e magari dopo aver richiamato diverse successive pagine, posso per esempio utilizzare i metodi della classe Zend_Pdf senza dover fare in questa pagina

require_once('Zend/Pdf.php');

??

risposto 5 anni fa
blow1986
X 0 X

Si, se non stai utilizzando Zend_Application che gi si occupa di istanziare l'autoloader.

:bye:

risposto 5 anni fa
Gianni Tomasicchio
X 0 X

ho inserito nella prima pagina il codice:

require_once("Zend/Loader/Autoloader.php");

$autoloader = Zend_Loader_Autoloader::getInstance();

poi andanto avanti tra la pagine arrivo a generare il pdf (tramite i metodi della zend_pdf)

in questa pagina ho tolto

require_once('Zend/Pdf.php');

ed in teoria dovrebbe andare perche con l'autoloader, dovrei avere a disposizione le classi senza fare il require ?

invece mi da errore e non mi apre nulla.

cosa pensi sia??

risposto 5 anni fa
blow1986
X 0 X

Che errore ti restituisce?

risposto 5 anni fa
civre
X 0 X

mi dice che non trova la Zend_Pdf()

presumo dunque all'istruzione : $pdf = new Zend_Pdf();

a questo punto non ha fuznionato l'autoloader delle classi??

risposto 5 anni fa
blow1986
X 0 X

L'autoloader l'hai chiamato correttamente, mi pare.

Sarebbe utile sapere l'errore esatto che viene riportato, ti dovrebbe indicare anche la riga dell'errore.

Controlla l'esistenza di del file Pdf.php all'interno della directory Zend.

risposto 5 anni fa
Mario Santagiuliana
X 0 X

la cartella library dello ZF contemplata nell'include path di PHP?

:bye:

risposto 5 anni fa
Gianni Tomasicchio
X 0 X

L'autoloader l'hai chiamato correttamente, mi pare.

Sarebbe utile sapere l'errore esatto che viene riportato, ti dovrebbe indicare anche la riga dell'errore.

Controlla l'esistenza di del file Pdf.php all'interno della directory Zend.

il file Pdf.php esiste all'interno della cartella Zend (prima di utilizzare la classe autolader, --require_once('Zend/Pdf.php');-- funzionava correttamente)

la cartella library dello ZF contemplata nell'include path di PHP?

Potresti indicarmi dove andare a guardare, o dove inserire il path??

Grazie mille!!

risposto 5 anni fa
blow1986
X 0 X

l'include path di php specificato nel php.ini ma pu anche essere modificato negli script PHP in questo modo:

set_include_path(get_include_path() . PATH_SEPARATOR . 'C:\Programmi\ZendFramework\library');

:bye:

risposto 5 anni fa
Gianni Tomasicchio
X 0 X

devo inserire

set_include_path(get_include_path() . PATH_SEPARATOR . '....\library');

nella pagina in cui ho dichiarato la classe autoloader??

credo per che la cartella dello ZF venga contemplata nel php.ini perche ha sempre funzionato ogni classe del framework senza dover fare questo procedimento aggiuntivo.

mi perdo qualcosa??

Graize mille!!

risposto 5 anni fa
blow1986
X 0 X

perch no controlli se nel php.ini specificata tale cartella? non puoi mica andare per supposizioni!

:bye:

risposto 5 anni fa
Gianni Tomasicchio
X 0 X

Eccomi..

ho controllato nem php.ini ed ho trovato questo:

include_path = ".:/usr/local/zendsvr/share/ZendFramework/library:/usr/local/zendsvr/share/pear"

credo dunque la cartella library dello ZF contemplata nell'include path di PHP.

Come mi consigli di procedere?

(non che il problema sta nel fatto che in non sto sviluppando in MVC e quindi la prima pagina in cui mettere la zend_loader_autolader) non viene richiamata tutte le volte??)

Grazie mille

risposto 5 anni fa
blow1986
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda