قائمة المحتويات
تم تصميم Zend_Config لتسهل استخدام بيانات الـ configuration الخاصة بتطبيقات الويب ,
حيث توفر واجهة استخدام تعتمد على اسم الـ property لقرائة المعلومات الخاصة بالـ configuration و ذلك
من اكثر من وسيلة حفظ بيانات هرمية.
حالياً توفر Zend_Config مجموعة من الـ class التى تساعد فى قرائة معلومات الـ configuration
المحفوظة فى ملفات نصية و هى :
Zend_Config_Array,
Zend_Config_Ini, و
Zend_Config_Xml.
تدعم Zend_Config نظام وراثة احادى و الذى يسمح للبيانات الخاصة بالـ configuration ان
تورث من قسم بيانات configorations الى اخر, إذاً يدعم Zend_Config النظام الشجرى
فى الوراثة و ذلك بدون قيد على طول الفروع, و كل فرع ابن يرث من اب واحد فقط.
داخليا تقوم Zend_Config بتطبيق interfaces و هى Countable و Iteratore لتوفر وصول اسهل
الى البيانات. يتم توفير البيانات لـ Zend_Config على هيئة associative array و التى من الممكن
ان تكون متعددة الأبعاد.
class مساعد (مثل Zend_Config_Ini) هو من يوفر هذه الـ array لـ Zend_Config
لكن هذا ليس اجباريا.
![]() |
ملاحظة |
|---|---|
تسمح Zend_Config بعمل تغييرات فى بيانات الـ configuration التى تم تحميلها الى الذاكرة ,
و لكنها لا توفر امكانية حفظ هذه البيانات فى اى من وسائط حفظ البيانات , الأدوات التى تقوم بإنشاء و تعديل بيانات الـ
configuration و حفظها فى وسائط حفظ بيانات هى خارج نطاق إطار عمل Zend , لكن يوجد العديد من الحلول مفتوحة
المصدر لإنشاء و تعديل بيانات الـ configuration و حفظها فى وسائط حفظ بيانات مختلفة و يمكنك الأستعانة بأى منها.
|
مثال 3.1. تحميل بيانات الـ Configuration من ملف INI
فى المثال التالى سنقوم بتحميل بيانات الـ configuration من ملف INI و ذلك بإستخدام
Zend_Config_Ini:
<?php
require_once 'Zend/Config.php';
require_once 'Zend/Config/Ini.php';
$config = new Zend_Config(Zend_Config_Ini::load('/path/to/config.ini', 'production'));
?>
الأن بيانات الـ configuration متوفرة و يمكن استخدامها من خلال الكائن المحفوظ فى config$ ,
فلنفترض ان بيانات الـ configuration كانت تحتوى على معلومات الأتصال بقاعدة بيانات و هذه المعلومات كانت
مسجلة فى ملف الـ INI بهذا الشكل :
[production]
database.type = pdo_mysql
database.host = db.example.com
database.username = dbuser
database.password = secret
database.name = dbname
سيمكنك إنشاء إتصال مع قاعدة البيانات عن طريق :
<?php
$myApplicationObject->databaseConnect($config->database->type,
$config->database->host,
$config->database->username,
$config->database->password,
$config->database->name);
?>
كما رأيت فى المثال بالأعلى , يمكنك الوصول الى بيانات الـ configuration بإستخدام نفس طريقة قرائة قيمة حقل "preperty" من كائن "object" .
يمكنك إنشاء نسختك الخاصة من Zend_Config بسهولة لتضيف ميزات جديدة تحتاج إلبها,
فى المثال التالى قمنا بإنشاء نسختنا الجديدة عن طريق الوراثة من Zend_Config و إنشاء
method جديد بإسم ()dump ليقوم بطباعة البيانات المحفوظة فى الكائن :
<?php
class MyConfig extends Zend_Config
{
protected $_indent;
public function dump()
{
$this->_indent = 0;
echo "<pre>\n";
$this->_dumpRecursor($this);
echo "</pre>";
}
protected function _dumpRecursor($config)
{
foreach ($config as $key => $value) {
echo str_repeat(" ", $this->_indent) . "$key =>";
if ($value instanceof Zend_Config) {
echo "\n";
$this->_indent++;
$this->_dumpRecursor($value);
$this->_indent--;
} else {
echo " $value\n";
}
}
}
}
$config = new MyConfig(Zend_Config_Ini::load('/path/to/config.ini', 'production'));
$config->dump();
?>
إذا استخدمنا البيانات من ملف الـ configuration السابق , سيطبع التالى :
<pre>
database =>
type => pdo_mysql
host => db.example.com
username => dbuser
password => secret
name => dbname
</pre>