5.3. Zend_Config_Ini

يوفر Zend_Config_Ini للمبرمج امكانية حفظ البيانات الخاصة بإعدادات البرنامج , و ذلك بصيغة الـ INI المألوفة , ثم تمكنه من قرائه هذه البيانات داخل برنامجه بيسر من خلال استخدامه لنفس القواعد النحوية التى يستخمدها عند قرائته لقيمة محفوظة فى property داخل كائن PHP عادى.

صيغة الـ INI توفر أمكانية إنشاء بيانات مرتبة على شكل هرمى و امكانية التوارث بين أقسام البيانات , حفظ البيانات بشكل هرمى مدعوم حالياً عن طريق الفصل بين اسماء المفاتيح "Keys" بإستخدام نقطة (.), و يمكن لأى قسم من أقسام البيانات أن يرث من قسم بيانات أخر عن طريق إلحاق أسم القسم بنقطة مزدوجة (:) ثم إلحاقها بأسم القسم الذى سيتم الوراثة منه.

[ملاحظة] parse_ini_file

تستخدم Zend_Config_Ini دالة PHP تسمى ()parse_ini_file , يرجى أن تقوم بمراجعة دليل المبرمج الخاص بلغة PHP لتتعرف على سلوك هذه الدالة, و الذى ينطبق على Zend_Config_Ini , مثل كيف يتم التعامل مع القيم الخاصة true و false و yes و no و null .

مثال 5.2. إستخدام Zend_Config_Ini

هذا المثال يوضح إستخدام بسيط لـ Zend_Config_Ini لتحميل بيانات الأعدادات من ملف INI , فى هذا المثال يوجد بيانات الأعدادات الخاصة بكل من مرحلة الأنتاج "production" و مرحلة التجهيز "staging" , و لأن بيانات الأعدادات الخاصة بمرحلة الـ staging تتشابه كثيراً مع تلك الخاصة بمرحلة الـ production , فتم جعل قسم بيانات الـ staging يرث من قسم بيانات الـ production , ربما هذا لا ينطبق على بعض الحالات الأكثر تعقيداً و لكن دعونا نفترض أن بيانات الأعدادت التالية محفوظة على المسار path/to/config.ini/ :

; Production site configuration data
[production]
webhost           = www.example.com
database.type     = pdo_mysql
database.host     = db.example.com
database.username = dbuser
database.password = secret
database.name     = dbname

; Staging site configuration data inherits from production and
; overrides values as necessary
[staging : production]
database.host     = dev.example.com
database.username = devuser
database.password = devsecret

الأن و لنفترض أن مطور البرنامج يريد تحميل بيانات الأعدادات الخاصة بمرحلة الـ staging من ملف الـ INI , بالفعل إنه من السهل تحميل هذه البيانات فقط عن طريق تحديد مسار ملف الـ INI و أسم قسم البيانات staging :

<?php
require_once 'Zend/Config/Ini.php';

$config = new Zend_Config_Ini('/path/to/config.ini', 'staging');

echo $config->database->host; // prints "dev.example.com"
echo $config->database->name; // prints "dbname"