قائمة المحتويات
تم تصميم 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>