Installazione Avanzata
In molti casi potrebbe essere utile accedere alla stessa istallazione di CakePHP da più parti del tuo sistema. Questo a causa di restrizioni sull'hosting condiviso, oppure perché vuoi che molte applicazioni condividano la stessa istallazione di CakePHP. Questa sezione descrive come rendere disponibile un'unica istallazione di CakePHP da molte directory.
Innanzitutto, comprendiamo la struttura di base di una applicazione CakePHP:
- Le librerie principali di CakePHP, in /cake.
- La tua applicazione, in /app.
- La directory root della tua applicazioneT, di norma in /app/webroot.
Ciascuna di queste directory ppuò essere spostata ovunque nel filesystem, con l'eccezione della webroot, che deve essere accessibile dal web server. Puoi spostare la directory webroot dove vuoi, ma devi comunicare a CakePHP come raggiungerla.
Per configurare la tua istallazione, devi solo cambiare alcune variabili nel file /app/webroot/index.php. Le variabili sono: ROOT, APP_DIR, e CAKE_CORE_INCLUDE_PATH.
- ROOT deve essere impostata con il percorso delle directory che contiene la directory app.
- APP_DIR deve essere impostata con il percorso della directory app.
- CAKE_CORE_INCLUDE_PATH deve essere impostata con il percorso della directory delle librerie principali di CakePHP.
Ecco un esempio per mostrare come funziona una istallazione avanzata nella pratica. Immagina di voler impostare l'istallazione come segue:
- La directory principale di CakePHP la mettiamo in /usr/lib/cake.
- La directory webroot la mettiamo in /var/www/mysite/.
- La directory dell'applicazione la mettiamo in /home/me/mysite.
Data questa struttura, devi ora modificare il file webroot/index.php (che ora si troverà in /var/www/mysite/index.php) in questo modo:
// /app/webroot/index.php (partial, comments removed)
if (!defined('ROOT')) {
define('ROOT', DS.'home'.DS.'me');
}
if (!defined('APP_DIR')) {
define ('APP_DIR', 'mysite');
}
if (!defined('CAKE_CORE_INCLUDE_PATH')) {
define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib'.DS.'cake');
}
// /app/webroot/index.php (partial, comments removed)if (!defined('ROOT')) {define('ROOT', DS.'home'.DS.'me');}if (!defined('APP_DIR')) {define ('APP_DIR', 'mysite');}if (!defined('CAKE_CORE_INCLUDE_PATH')) {define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib'.DS.'cake');}
Utilizza sempre la costante DS al posto delle barre per descrivere il percorso delle directory. Questo evita molti errori che possono essere causati dall'utilizzo di barre sbagliate, e rende il codice più postabile.
Configurazione di classi esterne
Talvolta può essere utile riutilizzare delle classi MVC tra diverse applicazioni sullo stesso sistema. Se vuoi utilizzare un controller in più applicazioni, puoi modificare il file bootstrap.php per ottenere questo risultato.
In bootstrap.php, definisci alcune variabili con nomi speciali per informare CakePHP dove cercare alcune classi MVC:
$viewPaths = array(); $controllerPaths = array(); $modelPaths = array(); $helperPaths = array(); $componentPaths = array(); $behaviorPaths = array();
$viewPaths = array();$controllerPaths = array();$modelPaths = array();$helperPaths = array();$componentPaths = array();$behaviorPaths = array();
Ciascuna di queste variabili può essere impostata come un array di percorsi assoluti del filesystem dove sono posizionate le classi esterne. Assicurati che ciascun percorso termini con una barra.

login to add a comment