Autoloading delle classi quando non sono nella stessa directory della libreria zend

Ho deciso che, invece di avere una copia di Zend Framework nella directory di each applicazione, vorrei tenerlo in una posizione sul server, con una sola copia usata da tutti i miei siti web. Tuttavia, mi piacerebbe che le classi personalizzate della mia app si trovassero ancora all'interno della cartella dell'applicazione. Quindi una struttura di cartelle un po 'come questa:

webroot |...library | |......Zend | |...app1 | |.....Library | |.......App1 | |...app2 |.....Library |.......App2 

Come posso get che Zend Loader trovi automaticamente le classi in App1 e App2? (preferibilmente semplicemente cambiando qualcosa in application.ini o bootstrap.php)

È ansible creare una singola directory di libreria, con collegamenti simbolici al codice condiviso live effettivo:

 webroot/library/Zend -> /path/to/Zend/library/Zend webroot/library/App1 -> /path/to/App1/library/App1 webroot/library/App2 -> /path/to/App2/library/App2 

Quindi, hai solo bisogno di webroot / libreria nel tuo path.

Per gestire gli aggiornamenti delle versioni, è sufficiente modificare il link simbolico per puntare a una nuova installazione:

 webroot/library/Zend -> /path/to/Zend-test/library/Zend 

Zend Loader utilizzerà php include_path per trovare i file da caricare.

Aggiungi semplicemente webroot / library al tuo include_path (che puoi eseguire in php.ini o nel tuo bootstrap) e il caricatore automatico dovrebbe essere in grado di trovare il framework.

Se sei desideroso di avere una versione condivisa di Zend puoi anche usare Pear ( http://pear.zfcampus.org/ ) per installarlo e poi finché hai il tuo include_path impostato per cercare nella tua dir pera ( / usr / share / php sulla mia macchina) quindi sei a posto.

Tuttavia, consiglierei di farlo solo per le macchine di sviluppo, in quanto altri hanno affermato che è una buona idea controllare le versioni di zend per each app durante la produzione.