5.2. نظرية العمل
السابق | فصل 5. Zend_Config | التالي

## 5.2. نظرية العمل

يتم تمرير بيانات الأعدادات إلى `Zend_Config` على شكل associative array و التى من الممكن ان تكون متعددة الأبعاد, و من أجل دعم تنظيم البيانات من الشكل العام إلى المحدد, تم توفير adapter classes أو "classes توفيقية" وظيفتها توفيق البيانات المقرؤة من مصادر حفظ البيانات المتعددة و تحويلها إلى associative array من أجل `Zend_Config`, و يمكن للمبرمج أن يوفر هذه المصفوفة "array" مباشرة إلى `Zend_Config` بدون استخدام adapter class, و هذا من الممكن ان يحدث فى بعض الحالات الخاصة.

يطبق `Zend_Config` كل من الـ interfaces المسمى `Countable` و `Iterator` ليوفر وسائل سهلة للوصل إلى البيانات, حيث سيمكنك إستخدام دالة الـ PHP المسمى `()count` أو إستخدام `foreach` على كائنات `Zend_Config` .

السلوك الطبيعى لـ `Zend_Config` يسمح بالقرائة فقط للبيانات , و عملية تعديل لأحد قيم البيانات المحفوظة به مثل ( `$config->database->host = 'example.com'`) يتسبب فى إلقاء exception , و يمكن تغيير هذا السلوك من خلال الـ constuctor و ذلك للسماح بتعديل قيم البيانات.

| لاحظ أن
تسمح `Zend_Config` بعمل تغييرات فى بيانات الـ configuration التى تم تحميلها الى الذاكرة , و لكنها لا توفر امكانية حفظ هذه البيانات فى اى من وسائط حفظ البيانات , الأدوات التى تقوم بإنشاء و تعديل بيانات الـ configuration و حفظها فى وسائط حفظ بيانات هى خارج نطاق Zend_Config , لكن يوجد العديد من الحلول مفتوحة المصدر لإنشاء و تعديل بيانات الـ configuration و حفظها فى وسائط حفظ بيانات مختلفة و يمكنك الأستعانة بأى منها.

الـ adapter classes يرثون من `Zend_Config` حيث أنهم فقط يعدلون على كيفية أدائه.

عائلة `Zend_Config` توفر أمكانية أن تكون البيانات مرتبة فى أقسام بيانات. و من الممكن أن يتم تحميل الـ adapter objects مع تحديد قسم بيانات واحد, أو أكثر من قسم , أو كل الأقسام (إن لم يتم تحديد قسم).

توفر الـ adapter classes فى `Zend_Config` امكانية الوراثة الأحادية بين أقسام البيانات , حيث يمكن أن يرث قسم بيانات من قسم بيانات أخر. هذا تم توفيره للتقليل من الحاجة لتكرار بيانات الأعدادات فى الأقسام لأسباب متعددة, و القسم الذى يرث من الممكن أن يغير القيم الموروثة من القسم الأب, و الذى من الممكن أن يكون ورث من قسم جد (أب الأب) و هكذا , لكن الوراثة المتعددة (مثل القسم C يرث مباشرة من الأقسام A و B ) غير مدعومة.

السابق | أعلى | التالي
فصل 5. Zend_Config | البداية | 5.3. Zend_Config_Ini