Zend Framework Config

Utilizzo di array nella configuration
Ci sono informazioni importanti per costruire un’applicazione con il database, come lo host del database, il nome del database, l’utente, database, il nome di applicazione, e così via. Queste informazioni vengono recuperati estensivamente. Sarebbe conciso se li mettiamo da qualche parte nella configurazione. Zend Framework ha Zend_Config, ch’è stato progettato per semplificare l’accesso e l’utilizzo dei dati di configurazione all’interno delle applicazioni.
In questo post, vediamo come implementare Zend_Config usando un array. Per caso, vedetee il nostro codice nel tutorial precedente:
Copia codice

<?php
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', true);
date_default_timezone_set('Europe/Berlin');
$rootDir = dirname(dirname(__FILE__));
set_include_path($rootDir . '/library' . PATH_SEPARATOR . get_include_path());
require_once 'Zend/Controller/Front.php';
require_once 'Zend/Registry.php';
require_once 'Zend/Db/Adapter/Pdo/Mysql.php';
Zend_Registry::set('title',"Mia prima applicazione");
$arrName = array('Mario Balducci', 'Federico Rossi',
     'Sergio Parilli', 'Francesco Belli');
Zend_Registry::set('credits',$arrName);
$params = array('host'=>'localhost',
		'username'	=>'root',
		'password'  =>'password',
		'dbname'	=>'zend'
				);
$DB = new Zend_Db_Adapter_Pdo_Mysql($params);
$DB->setFetchMode(Zend_Db::FETCH_OBJ);
Zend_Registry::set('DB',$DB);
Zend_Controller_Front::run('../application/controllers');
?>
Questo è il file index.php posizionato sotto la cartella web_root. Le linee 15 e 20-25 sono utilizzati spesso lungo l’applicazione. Possiamo mettere la configurazione in un array in questo modo:
Copia codice

<?php
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', true);
date_default_timezone_set('Europe/Berlin');
$rootDir = dirname(dirname(__FILE__));
set_include_path($rootDir . '/library' . PATH_SEPARATOR . get_include_path());
require_once 'Zend/Controller/Front.php';
require_once 'Zend/Registry.php';
require_once 'Zend/Db/Adapter/Pdo/Mysql.php';
require_once 'Zend/Config.php';
$arrConfig = array(
'webhost'=>'localhost',
	  'appName'=>'Mia prima applicazione',
	  'database'=>array(
	'dbhost'=>'localhost',
		  'dbname'=>'zend',
		  'dbuser'=>'root',
		  'dbpass'=>'password'
	)
);
$config = new Zend_Config($arrConfig);
$title  = $config->appName;
$params = array('host'		=>$config->database->dbhost,
	'username'	=>$config->database->dbuser,
			    'password'  =>$config->database->dbpass,
				'dbname'	=>$config->database->dbname
	);
Zend_Registry::set('title',$title);
$arrName = array('Mario Balducci', 'Federico Rossi',
     'Sergio Parilli', 'Francesco Belli');
Zend_Registry::set('credits',$arrName);
$DB = new Zend_Db_Adapter_Pdo_Mysql($params);
$DB->setFetchMode(Zend_Db::FETCH_OBJ);
Zend_Registry::set('DB',$DB);
Zend_Controller_Front::run('../application/controllers');
?>
In primo luogo, carichiamo Zend/Config.php (vedi linea 12). Quindi creare un array per contenere la configurazione (vedi linea 14-23). Successivamente, creare l’object-oriented wrapper sui dati di configurazione (vedi linea 28). Per ultimo, usiamo i dati di configurazione per l’accesso al database (vedi linea 28-32).
Creazione File di configurazione
Per una facile manutenzione, abbiamo messo i dati di configurazione nel file separati. Per esempio, in un file config.php. Facciamolo.
Creare un file chiamato “config.php” all’interno dell’applicazione. Inserisci il seguente codice:
Copia codice

<?
return array(
'webhost'=>'localhost',
	  'appName'=>'Mia prima applicazione',
	  'database'=>array(
	'host'=>'localhost',
		  'dbname'=>'zend',
		  'username'=>'root',
		  'password'=>'password'
	  )
   );
?>
Per chiamare questo file, possiamo usare in questo modo:
Copia codice

$config = new Zend_Config(require '../application/config.php');
Questo è il codice completo:
Copia codice

<?php
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', true);
date_default_timezone_set('Europe/Berlin');
$rootDir = dirname(dirname(__FILE__));
set_include_path($rootDir . '/library' . PATH_SEPARATOR . get_include_path());
require_once 'Zend/Controller/Front.php';
require_once 'Zend/Registry.php';
require_once 'Zend/Db/Adapter/Pdo/Mysql.php';
require_once 'Zend/Config.php';
$config = new Zend_Config(require '../application/config.php');
$title  = $config->appName;
$params = $config->database->toArray();
Zend_Registry::set('title',$title);
$arrName = array('Mario Balducci', 'Federico Rossi',
     'Sergio Parilli', 'Francesco Belli');
Zend_Registry::set('credits',$arrName);
$DB = new Zend_Db_Adapter_Pdo_Mysql($params);
$DB->setFetchMode(Zend_Db::FETCH_OBJ);
Zend_Registry::set('DB',$DB);
Zend_Controller_Front::run('../application/controllers');
?>
Utilizzo del file di configurazione INI
Abbiamo imparato come utilizzare Zend_Config al post precedente. Ora, cerchiamo di realizzarlo tramite un file ini.
Creare un file chiamato “config.ini” all’interno dell’applicazione. Inserisci il seguente esempio di configurazione:
Copia codice

; Sito in produzione. Dati di configurazione
[app]
webhost     = www.esempio.com
title			  = Mia prima applicazione
database.host     = localhost
database.username = root
database.password = password
database.dbname   = zend
Per leggere questo tipo di configurazione, usiamo in questo modo:
Copia codice

<?php
require_once 'Zend/Config/Ini.php';
$config = new Zend_Config_Ini('../application/config.ini','app');
$title  = $config->appName;
$params = $config->database->toArray();
Segue il codice completo:
Copia codice

<?php
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', true);
date_default_timezone_set('Europe/Berlin');
$rootDir = dirname(dirname(__FILE__));
set_include_path($rootDir . '/library' . PATH_SEPARATOR . get_include_path());
require_once 'Zend/Controller/Front.php';
require_once 'Zend/Registry.php';
require_once 'Zend/Db/Adapter/Pdo/Mysql.php';
require_once 'Zend/Config/Ini.php';
$config = new Zend_Config_Ini('../application/config.ini','app');
$title  = $config->appName;
$params = $config->database->toArray();
Zend_Registry::set('title',$title);
$arrName = array('Mario Balducci', 'Federico Rossi',
     'Sergio Parilli', 'Francesco Belli');
Zend_Registry::set('credits',$arrName);
$DB = new Zend_Db_Adapter_Pdo_Mysql($params);
$DB->setFetchMode(Zend_Db::FETCH_OBJ);
Zend_Registry::set('DB',$DB);
Zend_Controller_Front::run('../application/controllers');
?>
Utilizzo del file di configurazione XML
Questa è un’altra alternativa per creare un file di configurazione. Possiamo memorizzare i dati di configurazione in un semplice formato XML. Per leggerlo, si usa Zend_Config_Xml().
In primo luogo, creare un file XML denominato “config.xml” all’interno dell’applicazione. Inserire il seguente codice:
Copia codice

<?xml version="1.0"?>
<configdata>
  <app>
    <webhost>www.esempio.com</webhost>
    <title>Mia prima applicazione</title>
	<database>
	  <host>localhost</host>
	  <username>root</username>
	  <password>password</password>
	  <dbname>zend</dbname>
	</database>
  </app>
</configdata>
Per accedervi, si può usare:
Copia codice

require_once 'Zend/Config/Xml.php';
$config = new Zend_Config_Xml('../application/config.xml','app');