[ZF-10089] Zend_Log
[zend.git] / documentation / manual / ar / module_specs / Zend_Config-TheoryOfOperation.xml
blobc4497f0949c81bbe4ecb8ab2a16ec9c592c3f6de
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         , حيث يمكن أن يرث قسم بيانات من قسم بيانات أخر.
47         هذا تم توفيره للتقليل من الحاجة لتكرار بيانات الأعدادات فى الأقسام لأسباب متعددة,
48         و القسم الذى يرث من الممكن أن يغير القيم الموروثة من القسم الأب, و الذى من الممكن أن يكون ورث من
49         قسم جد (أب الأب) و هكذا , لكن الوراثة المتعددة (مثل القسم C يرث مباشرة من الأقسام A و B ) غير مدعومة.
50     </para>
51 </sect1>
52 <!--
53 vim:se ts=4 sw=4 et:
54 -->