| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- <sect1 id="zend.config.theory_of_operation">
- <title>نظرية العمل</title>
- <para>
- يتم تمرير بيانات الأعدادات إلى <code>Zend_Config</code> على شكل associative array
- و التى من الممكن ان تكون متعددة الأبعاد, و من أجل دعم تنظيم البيانات من الشكل العام إلى المحدد,
- تم توفير adapter classes أو "classes توفيقية" وظيفتها توفيق البيانات المقرؤة من مصادر حفظ البيانات المتعددة
- و تحويلها إلى associative array من أجل <code>Zend_Config</code>, و يمكن للمبرمج أن يوفر
- هذه المصفوفة "array" مباشرة إلى <code>Zend_Config</code> بدون استخدام adapter class,
- و هذا من الممكن ان يحدث فى بعض الحالات الخاصة.
- </para>
- <para>
- يطبق <code>Zend_Config</code> كل من الـ interfaces المسمى
- <code>Countable</code> و <code>Iterator</code> ليوفر وسائل سهلة للوصل إلى البيانات,
- حيث سيمكنك إستخدام دالة الـ PHP المسمى
- <ulink url="http://php.net/count"><code>()count</code></ulink>
- أو إستخدام <ulink url="http://php.net/foreach"><code>foreach</code></ulink>
- على كائنات <code>Zend_Config</code> .
- </para>
- <para>
- السلوك الطبيعى لـ <code>Zend_Config</code> يسمح بالقرائة فقط للبيانات , و عملية تعديل لأحد
- قيم البيانات المحفوظة به مثل
- ( <code><![CDATA[$config->database->host = 'example.com']]></code>)
- يتسبب فى إلقاء exception , و يمكن تغيير هذا السلوك من خلال الـ constuctor و ذلك
- للسماح بتعديل قيم البيانات.
- <note>
- <title>لاحظ أن</title>
- <para>
- تسمح <code>Zend_Config</code> بعمل تغييرات فى بيانات الـ configuration التى تم تحميلها الى الذاكرة ,
- و لكنها لا توفر امكانية حفظ هذه البيانات فى اى من وسائط حفظ البيانات , الأدوات التى تقوم بإنشاء و تعديل بيانات الـ
- configuration و حفظها فى وسائط حفظ بيانات هى خارج نطاق Zend_Config , لكن يوجد العديد من الحلول مفتوحة
- المصدر لإنشاء و تعديل بيانات الـ configuration و حفظها فى وسائط حفظ بيانات مختلفة و يمكنك الأستعانة بأى منها.
- </para>
- </note>
- </para>
- <para>
- الـ adapter classes يرثون من <code>Zend_Config</code> حيث أنهم فقط يعدلون على كيفية أدائه.
- </para>
- <para>
- عائلة <code>Zend_Config</code> توفر أمكانية أن تكون البيانات مرتبة فى أقسام بيانات.
- و من الممكن أن يتم تحميل الـ adapter objects مع تحديد قسم بيانات واحد, أو أكثر من قسم ,
- أو كل الأقسام (إن لم يتم تحديد قسم).
- </para>
- <para>
- توفر الـ adapter classes فى <code>Zend_Config</code> امكانية الوراثة الأحادية بين أقسام البيانات
- , حيث يمكن أن يرث قسم بيانات من قسم بيانات أخر.
- هذا تم توفيره للتقليل من الحاجة لتكرار بيانات الأعدادات فى الأقسام لأسباب متعددة,
- و القسم الذى يرث من الممكن أن يغير القيم الموروثة من القسم الأب, و الذى من الممكن أن يكون ورث من
- قسم جد (أب الأب) و هكذا , لكن الوراثة المتعددة (مثل القسم C يرث مباشرة من الأقسام A و B ) غير مدعومة.
- </para>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|