Zend Framework هو إطار عمل تطوير PHP مفتوح المصدر يعتمد بالكامل على PHP5 تم تطويره بواسطة شركة Zend ويمكن استخدامه لتطوير برامج وخدمات الويب ويستخدم النمط المعماري MVC (Model-View-Controller) لفصل أجزاء مختلفة من التطبيق تسهيل تطوير البرنامج والحفاظ عليه.
ZF2 ليس مجرد تحديث غير مكتمل مثل أطر العمل الأخرى، بل إنه يعيد كتابة كود ZF1 بالكامل والشعار الرئيسي هو "الأداء العالي".
دعونا نلقي نظرة على الميزات الجديدة التي جلبتها ZF2:
1. النمطية (ModuleManager)
بالمقارنة مع ZF1، يدعم ZF2 أصلاً مفهوم الوحدات النمطية ويمكن تحويل أي برنامج PHP تابع لجهة خارجية إلى وحدة Zend طالما أنه يتبع معايير الترميز الخاصة بـ Zend وبنية التعليمات البرمجية. في الوقت الحاضر، تم إصدار مجموعة من الوحدات التجريبية (انظر وحدات ZF2). هناك العديد من المشاريع الممتازة مثل Doctrine ORM.
ومن المتوقع أنه مع نضوج ZF2 ببطء، ستظهر المزيد والمزيد من الوحدات الاختيارية. ومن الممكن أن يكون تطوير المشروع المستقبلي استنادًا إلى ZF2 سهلاً وبسيطًا مثل وحدات البناء.
2. يعتمد على الأحداث (EventManager)
في البرامج التقليدية، يتم تنفيذ التعليمات البرمجية بتسلسل خطي، لذلك غالبًا ما يكون من الصعب فصل بعض الوظائف إلى مكون أو وحدة أثناء التطوير.
يحركه الحدث، أو الخطاف، يغير الطريقة التي تعمل بها البرامج العادية بطريقة مبسطة. بعد تطبيق البرنامج القائم على الحدث، سيتم تشغيل البرنامج بطريقة تشبه القفز "الحدث المسجل" => "الحدث المشغل"، والذي يمكن تشغيله. دون التأثير على رمز البرنامج الأصلي، من السهل إضافة منطق عمل جديد في أي مكان، مما يجعل تطوير المشروع مرنًا للغاية.
3. مدير الخدمة
يأتي مفهوم مدير الخدمة من فكرة برمجة "نمط محدد موقع الخدمة". تدعو هذه الفكرة إلى استخراج كل وظيفة مستقلة في البرنامج باعتبارها "خدمة". كل خدمة قابلة للتنبيه بشكل مستقل فقط عند استدعاء الخدمة، سيتم تشغيل البرنامج المرتبط بالخدمة.
هذا هو سر تحسين أداء ZF2. تنعكس فكرة ServiceLocator في كل مكان في عملية بدء تشغيل MVC لـ ZF2، كما أن استدعاء الوحدات الوظيفية "بخيل" للغاية، وهو ما سيكون بالتأكيد بمثابة مفاجأة كبيرة للمطورين الذين واجهوا مشكلات في السابق مع أداء زند.
4. حقن التبعية
يتم استخدام حقن التبعية على نطاق واسع في أطر عمل Java السائدة ويمكنه فصل التطبيقات واسعة النطاق بشكل فعال. لقد مر إدخال Di في ZF2 باعتبارات ومقايضات متكررة، حتى بعد دخول المرحلة التجريبية، كان Di لا يزال يستخدم كحل التنفيذ الأساسي لـ ZF2، وكان تكوين Mvc بأكمله يعتمد على Di. في النهاية، لتجنب الوقوع في مستنقع برمجة البيانات الوصفية (البرمجة الوصفية) الذي قد يسببه Di، يتم استخدام Di فقط كتطبيق سفلي لـ ZF2، ويتم إضافة ServiceManager إلى الطبقة العليا. لا يحتاج المطورون العاديون إلى التعرض لمستوى Di عند استخدام ZF2. ومع ذلك، هذا لا يمنع DI من الوجود والعمل كمكون PHP ممتاز.
5. البرمجة الاجتماعية
تتم استضافة كود ZF2 بالكامل على Github بفضل التصميم الممتاز لـ Github، يمكن لأي شخص المشاركة بسهولة في بناء مشروع ZF2 من خلال الشوكة، وحتى تقديم وظائف الوحدة النمطية الجديدة. ساعد المؤلف AlloVince أيضًا فريق Zend في إصلاح بعض الأخطاء ووجد أن فريق Zend استجاب بسرعة كبيرة (لم يتجاوز 24 ساعة أبدًا) واستغرق وقتًا للرد على التعليقات على محمل الجد. لذلك، تعد المشاركة في مشروع ZF2 خيارًا جيدًا للمشاركة في مشروع PHP مفتوح المصدر.