Welcome to the Cookbook

loading...

3.3.3 Installazione Avanzata

The original text for this section has changed since it was translated. Please help resolve this difference. You can:

More information about translations

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:

  1. Le librerie principali di CakePHP, in /cake.
  2. La tua applicazione, in /app.
  3. La directory root della tua applicazione, di norma in /app/webroot.

Ciascuna di queste directory puó 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');
}
  1. // /app/webroot/index.php (partial, comments removed)
  2. if (!defined('ROOT')) {
  3. define('ROOT', DS.'home'.DS.'me');
  4. }
  5. if (!defined('APP_DIR')) {
  6. define ('APP_DIR', 'mysite');
  7. }
  8. if (!defined('CAKE_CORE_INCLUDE_PATH')) {
  9. define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib'.DS.'cake');
  10. }

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.

3.3.3.1 Configurazione di classi esterne

The original text for this section has changed since it was translated. Please help resolve this difference. You can:

More information about translations

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();
  1. $viewPaths = array();
  2. $controllerPaths = array();
  3. $modelPaths = array();
  4. $helperPaths = array();
  5. $componentPaths = array();
  6. $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.