11 Zend Framework konfiguráció használata

Default book

A Zend Framework alkalmazásokban a konfigurációs állományokat a konfigurációját három módon célszerű használni:

  • Tömbben megadva => Ekkor egy megfelelően kialakított asszociatív tömböt használunk és a Zend_Config() osztályt használjuk
  • Fájlban megadva a tömböt. Ekkor egy config.php-ba mentjük le a konfigurációs paramétereket, majd a fájlt beolvasva kapjuk meg a konfig tömböt.
  • A harmadik esetben ini fájlokat használunk. Ez a legjobban felhasználó barát, mivel ezt a windowsos világból is ismerik a felhasználók. Ennél pedig nem kell mélyebben elmerülni a konfigurációs állományok mélységében.
  • Végül szabványos xml fájlban is megadhatjuk a konfigurációs értékeket.

A fájlból beolvasott konfigurációs tömb

A application/config.php tartalma:

<?
return array(
      'webhost'=>'localhost',
   'appName'=>'My First Zend',
   'database'=>array(
       'host'=>'localhost',
    'dbname'=>'zend',
    'username'=>'root',
    'password'=>'admin'
   )
   );
?>

A public/index.php tartalma

<?php
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', true);
date_default_timezone_set('Europe/London');

$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('Ilmia Fatin','Aqila Farzana', 'Imanda Fahrizal');
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');

?>

Az ini fájlok használata

Az application/config.ini fájl tartalma

; Production site configuration data
[app]
webhost   = www.example.com
title     = My Zend Framework
database.host     = localhost
database.username = root
database.password = admin
database.dbname   =  zend

Az ini fájlok esetén az egy kulcshoz tartozó albejegyzéseket ponttal választjuk el a kulcstól.

A public/index.php tartalma ekkor

<?php
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', true);
date_default_timezone_set('Europe/London');

$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('Ilmia Fatin','Aqila Farzana', 'Imanda Fahrizal');
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');
?>

A Zend_Config_Ini('ini fájl elérési útja', 'szakasz') módon paraméterezendő. Így lehet egy konfigurációs állományban több konfigurációt is használni.

XML konfiguráció használata

A szükséges application/config.xml fájl tartalma

<?xml version="1.0"?>
<configdata>
  <app>
    <webhost>localhost</webhost>
    <database>
       <host>localhost</host>
       <username>root</username>
       <password>admin</password>
       <dbname>zend</dbname>
     </database>
  </app>
</configdata>

Az xml fájl feldolgozásának kódrészlete

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

A feldolgozás csak abban a két sorban tér el, ahol az ini fájl beolvasása és példányosítása van.