Table of Contents : Il manuale

La classe Configuration

Anche se in CakePHP non accederai spesso alla configurazione, talvolta può essere utile avere una configurazione specifica per la propria applicazione. In passato puoi aver definito alcuni valori di configurazione tramite delle variabili o costanti salvate in qualche file. Ora puoi includere i tuoi files di configurazione per avere a disposizione quei valori.

La nuova classe Configure di CakePHP può essere usata per salvare e utilizzare delle impostazioni relative all'applicazione. Ma attento: questa classe ti permette di salvare qualsiasi cosa, per poterla riutilizzare ovunque nel tuo codice. Questa caratteristica potrebbe indurti a non rispettare le regole MVC che stanno alla base di CakePHP. La funzione principale della classe Configure, infatti, è di raccogliere quelle variabili che vengono condivise tra diversi oggetti. Ricorda dunque la regola "convention over configuration" e non tradire la struttura MVC di CakePHP.

Puoi richiamare staticamente i metodi di questa classe da qualsiasi parte della tua applicazione.

<?php Configure::read('debug'); ?>
  1. <?php Configure::read('debug'); ?>

Metodi della classe Configure

write(string $key, mixed $value)

Si usa il metodo write() per salvare i dati nella classe Configure

<?php
 
Configure::write('Company.name','Pizza, Inc.');
Configure::write('Company.slogan','Pizza for your body and soul');
 
?>
  1. <?php
  2. Configure::write('Company.name','Pizza, Inc.');
  3. Configure::write('Company.slogan','Pizza for your body and soul');
  4. ?>

Osserva che si utilizza la notazione puntata nel parametro $key. Puoi usare questa notazione per organizzare i dati in gruppi logici.

L'esempio può essere riscritto in una sola riga:

<?php
 
Configure::write(
    'Company',array('name'=>'Pizza, Inc.','slogan'=>'Pizza for your body and soul')
);
 
?>
  1. <?php
  2. Configure::write(
  3. 'Company',array('name'=>'Pizza, Inc.','slogan'=>'Pizza for your body and soul')
  4. );
  5. ?>

Puoi usare Configure::write('debug', $int) per passare al volo tra l'ambiente di produzione e quello di debug. Questa caratteristica è particolarmente utile per le operazioni AMF e SOAP, dove le informazioni di debug possono causare errori.

read(string $key = ‘debug’)

Utilizzato per leggere un valore dalla configurazione dell'applicazione. Di default riporta l'impostazione di debug. Se fornisci una chiave, invece, riporta il suo valore. Utilizzando l'esempio di write() qui sopra, puoi leggere i valori così:

<?php
 
Configure::read('Company.name');    //da come risultato: 'Pizza, Inc.'
Configure::read('Company.slogan');  //da come risultato: 'Pizza for your body and soul'
 
Configure::read('Company');
 
//da come risultato:
 
array('name' => 'Pizza, Inc.', 'slogan' => 'Pizza for your body and soul');
 
?>
  1. <?php
  2. Configure::read('Company.name'); //da come risultato: 'Pizza, Inc.'
  3. Configure::read('Company.slogan'); //da come risultato: 'Pizza for your body and soul'
  4. Configure::read('Company');
  5. //da come risultato:
  6. array('name' => 'Pizza, Inc.', 'slogan' => 'Pizza for your body and soul');
  7. ?>
delete(string $key)

Usato per cancellare la variabile di configurazione.

<?php Configure::delete('Company.name'); ?>
  1. <?php Configure::delete('Company.name'); ?>
load(string $path)

Usato per caricare la configurazione da un file esterno.

/app/config/messages.php:
 
<?php
$config['Company']['name'] = 'Pizza, Inc.';
$config['Company']['slogan'] = 'Pizza for your body and soul';
$config['Company']['phone'] = '555-55-55';
?>
 
<?php
Configure::load('messages');
Configure::read('Company.name');
?>
  1. /app/config/messages.php:
  2. <?php
  3. $config['Company']['name'] = 'Pizza, Inc.';
  4. $config['Company']['slogan'] = 'Pizza for your body and soul';
  5. $config['Company']['phone'] = '555-55-55';
  6. ?>
  7. <?php
  8. Configure::load('messages');
  9. Configure::read('Company.name');
  10. ?>

Osserva che ogni parametro di configurazione è una coppia chiave/valore appartenente all'array $configure. Tutte le altre variabili presenti nel file saranno ignorate dalla funzione load().

version()

Restituisce la versione corrente di CakePHP.

write

write(string $key, mixed $value)
  1. write(string $key, mixed $value)

Use write() to store data in the application’s configuration.

Configure::write('Company.name','Pizza, Inc.');
Configure::write('Company.slogan','Pizza for your body and soul');
  1. Configure::write('Company.name','Pizza, Inc.');
  2. Configure::write('Company.slogan','Pizza for your body and soul');

Note the usage of dot notation in the $key parameter. You can use this notation to organize your configuration into logical groups.

The above example could also be written in a single call:

Configure::write(
    'Company',array('name'=>'Pizza, Inc.','slogan'=>'Pizza for your body and soul')
);
  1. Configure::write(
  2. 'Company',array('name'=>'Pizza, Inc.','slogan'=>'Pizza for your body and soul')
  3. );

You can use Configure::write(‘debug’, $int) to switch between debug and production modes on the fly. This is especially handy for AMF or SOAP interactions where debugging information can cause parsing problems.

read

read(string $key = 'debug')
  1. read(string $key = 'debug')

Used to read configuration data from the application. Defaults to CakePHP’s important debug value. If a key is supplied, the data is returned. Using our examples from write() above, we can read that data back:

Configure::read('Company.name');    //yields: 'Pizza, Inc.'
Configure::read('Company.slogan');  //yields: 'Pizza for your body and soul'
 
Configure::read('Company');
 
//yields: 
array('name' => 'Pizza, Inc.', 'slogan' => 'Pizza for your body and soul');
  1. Configure::read('Company.name'); //yields: 'Pizza, Inc.'
  2. Configure::read('Company.slogan'); //yields: 'Pizza for your body and soul'
  3. Configure::read('Company');
  4. //yields:
  5. array('name' => 'Pizza, Inc.', 'slogan' => 'Pizza for your body and soul');

delete

delete(string $key)
  1. delete(string $key)

Used to delete information from the application’s configuration.

Configure::delete('Company.name');
  1. Configure::delete('Company.name');

load

load(string $path)
  1. load(string $path)

Use this method to load configuration information from a specific file.

// /app/config/messages.php:
<?php
$config['Company']['name'] = 'Pizza, Inc.';
$config['Company']['slogan'] = 'Pizza for your body and soul';
$config['Company']['phone'] = '555-55-55';
?>
 
<?php
Configure::load('messages');
Configure::read('Company.name');
?>
  1. // /app/config/messages.php:
  2. <?php
  3. $config['Company']['name'] = 'Pizza, Inc.';
  4. $config['Company']['slogan'] = 'Pizza for your body and soul';
  5. $config['Company']['phone'] = '555-55-55';
  6. ?>
  7. <?php
  8. Configure::load('messages');
  9. Configure::read('Company.name');
  10. ?>

Note that every configure key-value pair is represented in the file with the $config array. Any other variables in the file will be ignored by the load() function.

version

version()
  1. version()

Returns the CakePHP version for the current application.

Variabili di configurazione generali in CakePHP

La classe Configure ` usata per gestire un set di variabili di configurazione di CakePHP. Queste variabili si trovano in app/config/core.php. Ora descriviamo ciascuna variabile e come il suo utilizzo modifica il comportamento del'applicazione CakePHP.

variabile Configure Descrizione
debug Modifica l'output del debug di CakePHP.

0 = Modalità di Produzione. Nessun output.
1 = Mostra gli errori e gli avvisi.
2 = Mostra gli errori, gli avisi e le query SQL.
3 = Mostra gli errori, gli avvisi, le query SQL e un report completo del controller.
App.baseUrl Commentata. Togli il commento se non intendi utilizzare la modalità mod_rewrite di Apache in CakePHP. Non dimenticare di eliminare anche il file .htaccess.
Routing.admin Togli il commento a questa definizione se vuoi usare il sistema di routing per l'admin. Imposta il valore di questa variabile con il nome che vuoi dare alla tua sezione admin. Imparerai dell'altro su questo argomento più avanti.
Cache.disable Quando è impostato a true, la cache è disabilitata in tutto il sito.
Cache.check Se impostato a true, abilita il caching della view. Nel controller dovrai comunque richiamarlo, ma questa variabile imposta il funzionamento della cache nell'intero sistema.
Session.save Definisce quale meccanismo di salvataggio delle sessioni verrà usato da CakePHP

php = Utilizza il salvataggio preimpostato in php.
cake = Salva la sessione nella directory /app/tmp
database = Salva la sessione in una tabella del database. Assicurati di predisporre la tabella utilizzando il file SQL che trovi in /app/config/sql/sessions.sql.
Session.table Il nome della tabella (senza l'eventuale prefisso) in cui salvare i dati di sessione.
Session.database Il nome del database in cui salvare i dati di sessione.
Session.cookie Il nome del cookie usato per rintracciare la sessione.
Session.timeout Il timeout predefinito in secondi. Il valore attuale dipende dalla variabile Security.level.
Session.start Se impostato a true, la sessione inizia automaticamente.
Session.checkAgent Se impostato a false, CakePHP non controllerà che l'user agent non cambi da una richiesta all'altra.
Security.level Il livello di sicurezza in CakePHP. Il timeout della sessione, definito in 'Session.timeout', è moltiplicato in base a questo settaggio.

Valori ammessi:
'high' = x 10
'medium' = x 100
'low' = x 300
Security.salt A random string used in security hashing.
Acl.classname, Acl.database Costanti usate insieme alla funzionalità Access Control List. Per i dettagli ti rimandiamo alla sezione Access Control Lists.

Attenzione: In core.php ci sono delle altre impostazioni per la cache, le tratteremo più avanti, quindi state all'occhio.

La classe Configure può essere usata per leggere e scrivere variabili di configurazione al volo. Questo è molto utile se vuoi abilitare il debug solo in alcune parti dell'applicazione.

Costanti in Configuration

Anche se molte opzioni di configurazione sono gestite in Configure, ci sono alcune costanti che CakePHP utilizza durante l'esecuzione.

Costante Descrizione
LOG_ERROR Costante di Errore. Usata per differenziare gli errori di log e di debug. PHP attualmente supporta LOG_DEBUG.