Zend_Config-TheoryOfOperation.xml 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <sect1 id="zend.config.theory_of_operation">
  2. <title>نظرية العمل</title>
  3. <para>
  4. يتم تمرير بيانات الأعدادات إلى <code>Zend_Config</code> على شكل associative array
  5. و التى من الممكن ان تكون متعددة الأبعاد, و من أجل دعم تنظيم البيانات من الشكل العام إلى المحدد,
  6. تم توفير adapter classes أو "classes توفيقية" وظيفتها توفيق البيانات المقرؤة من مصادر حفظ البيانات المتعددة
  7. و تحويلها إلى associative array من أجل <code>Zend_Config</code>, و يمكن للمبرمج أن يوفر
  8. هذه المصفوفة "array" مباشرة إلى <code>Zend_Config</code> بدون استخدام adapter class,
  9. و هذا من الممكن ان يحدث فى بعض الحالات الخاصة.
  10. </para>
  11. <para>
  12. يطبق <code>Zend_Config</code> كل من الـ interfaces المسمى
  13. <code>Countable</code> و <code>Iterator</code> ليوفر وسائل سهلة للوصل إلى البيانات,
  14. حيث سيمكنك إستخدام دالة الـ PHP المسمى
  15. <ulink url="http://php.net/count"><code>()count</code></ulink>
  16. أو إستخدام <ulink url="http://php.net/foreach"><code>foreach</code></ulink>
  17. على كائنات <code>Zend_Config</code> .
  18. </para>
  19. <para>
  20. السلوك الطبيعى لـ <code>Zend_Config</code> يسمح بالقرائة فقط للبيانات , و عملية تعديل لأحد
  21. قيم البيانات المحفوظة به مثل
  22. ( <code><![CDATA[$config->database->host = 'example.com']]></code>)
  23. يتسبب فى إلقاء exception , و يمكن تغيير هذا السلوك من خلال الـ constuctor و ذلك
  24. للسماح بتعديل قيم البيانات.
  25. <note>
  26. <title>لاحظ أن</title>
  27. <para>
  28. تسمح <code>Zend_Config</code> بعمل تغييرات فى بيانات الـ configuration التى تم تحميلها الى الذاكرة ,
  29. و لكنها لا توفر امكانية حفظ هذه البيانات فى اى من وسائط حفظ البيانات , الأدوات التى تقوم بإنشاء و تعديل بيانات الـ
  30. configuration و حفظها فى وسائط حفظ بيانات هى خارج نطاق Zend_Config , لكن يوجد العديد من الحلول مفتوحة
  31. المصدر لإنشاء و تعديل بيانات الـ configuration و حفظها فى وسائط حفظ بيانات مختلفة و يمكنك الأستعانة بأى منها.
  32. </para>
  33. </note>
  34. </para>
  35. <para>
  36. الـ adapter classes يرثون من <code>Zend_Config</code> حيث أنهم فقط يعدلون على كيفية أدائه.
  37. </para>
  38. <para>
  39. عائلة <code>Zend_Config</code> توفر أمكانية أن تكون البيانات مرتبة فى أقسام بيانات.
  40. و من الممكن أن يتم تحميل الـ adapter objects مع تحديد قسم بيانات واحد, أو أكثر من قسم ,
  41. أو كل الأقسام (إن لم يتم تحديد قسم).
  42. </para>
  43. <para>
  44. توفر الـ adapter classes فى <code>Zend_Config</code> امكانية الوراثة الأحادية بين أقسام البيانات
  45. , حيث يمكن أن يرث قسم بيانات من قسم بيانات أخر.
  46. هذا تم توفيره للتقليل من الحاجة لتكرار بيانات الأعدادات فى الأقسام لأسباب متعددة,
  47. و القسم الذى يرث من الممكن أن يغير القيم الموروثة من القسم الأب, و الذى من الممكن أن يكون ورث من
  48. قسم جد (أب الأب) و هكذا , لكن الوراثة المتعددة (مثل القسم C يرث مباشرة من الأقسام A و B ) غير مدعومة.
  49. </para>
  50. </sect1>
  51. <!--
  52. vim:se ts=4 sw=4 et:
  53. -->