المعلوماتية > برمجيات

أطر عمل؛ PHP (Laminas Project (Zend

لمحة تاريخية عن إطار العمل

بدأ الأمر بتعاون بين ثلاثة مطوّرين؛ أندي غوتمانز (Andi Gutmans)، زيف سوراسكي (Zeev Suraski)، وراموس ليردورف (Rasmus Lerdorf).

كان ذلك في عام 1997 حين قرروا تحسين ما طوّره راموس في عام 1991؛ إذ طوّر راموس لغةً استخدمها لتعقب زائري موقعه، وأطلق عليها (PHP Tools (1 (اختصارًا لـ Personal Home Page Tools).

وقد أعادوا كتابة هذه اللغة لإدخال التحسينات عليها لتصبح لغة الـ PHP التي نعرفها بشكلها الحالي، واختاروا الاسم PHP 3 لها؛ اختصارًا لـ (Hypertext Preprocessor (1.

بعد سنتين من إطلاق PHP 3؛ قرّر كلٌّ من Andi وZeev إطلاق شركة خاصة تُدعى زيند للتقنيّة Zend Technologies، والتي دعمت هذه اللغة وأطلقت النسخة الرابعة منها باسم PHP 4، متضمّنةً مُحللًا لغويًّا (parser) يُدعَى (Zend engine (3.

في عام 2006، طرحت شركة Zend للتقنيّة إطارَ عملٍ جديد يُستخدَم لتطوير تطبيقات الويب يُدعَى (Zend Framework) الذي استخدمه لاحقًا أكثرُ من 570 مليون مستخدم عبر إصداراته المختلفة، وجعلت الشركة هذا الإطار مفتوحَ المصدر لاستخدامه على نحو مجاني (4).

خلال الأعوام اللاحقة تتالى تطوير هذا الإطار واستحوذت عليه عدة شركات؛ آخرها شركة تدعى Perforce Software، وتغيّر مع هذا الاستحواذ الاسم ليصبح Zend by perforce أو مشروع لاميناس Laminas Project، واستضافته شركة لينوكس (3) Linux Foundation.

تعريف بإطار العمل

يهدف إطار العمل Laminas Project إلى تأمين مجموعة متنوعة وغنية من المكوّنات البرمجية القابلة لإعادة الاستخدام في تطوير تطبيقات برمجية ضخمة وموثوقة، وقُسِّمَ الإطار إلى عدة مشاريع تستطيع اختيار ما تحتاجه (5).

المكونات البرمجية Components

يحتوي مشروع المكونات البرمجية على مجموعة غنية ومتنوعة من المكونات التي تحتاجها في أثناء تطوير البرمجيات. فعلى سبيل المثال: هناك مكونات للتعامل مع قواعد البيانات (database)، ومكونات للتعامل مع صفحات HTML، وأخرى للتعامل مع عناصر دخل المستخدم وإدارة التحقق من صحتها (Validation)، إضافةً إلى مكونات لإدارة الذاكرة وغيرها العديد من المكونات المهمة في عمل الموقع (6).

ميزو Mezzio

هي بيئة تنفيذية خاصة بلغة الـ PHP مُخصصة للعمل مع الطبقات الوسطى (Middleware (PHP Middleware runtime، إضافةً إلى مجموعة من الأدوات المساعدة والداعمة لهذه البيئة (7). 

طبقة لاميناس المُقادة بالأحداث لدعم معمارية الـ MVC) laminas' event driven mvc layer)

هي طبقة مبنية على ثلاثة مكونات: يساعد المكوِّنُ الأول على بناء التطبيق وتهيئته ويُدعَى "مكوّن إدارة الخدمات Service Manager"، ويُستخدَم الثاني في إدارة التطبيق على نحو كامل؛ فهو يُقدّم خدمات ابتداءً من إقلاع الموقع وتشغيله ومعالجة استدعاءات الطلبات (requests) والاستجابات (response) وتحويل ملفات الواجهات (views) إلى صفحات ويب، ويُدعَى هذا المكون بإدارة الأحداث (Event Manager). أما المكون الأخير يُستخدَم على نحو خاص في المتحكِّم (Controller)؛ فهو يُمثل طلبات وردود الـ (HTTP (Http request and responses، ويُدعَى(Http(8.

تجهيز بيئة العمل لاستخدام إطار العمل

يعمل الإطار على مُخدّم يُخدّم طلبات الـ (HTTP (HTTP server مثل Apache ،nginx.

يحتاج إلى الإصدار 5.2 من لغة الـ PHP على الأقل، إضافةً إلى استخدام Composer لإدارة اعتماديات المشروع.

يمكنك الاطلاع على المزيد من التفاصيل بخصوص تجهيز بيئة العمل عبر الرابط الآتي: هنا

مكونات الإطار الأساسية

يقدم الإطار عددًا ضخمًا من المكونات (Components)، ومنها:

مكون التعامل مع قواعد البيانات laminas-db

هو طبقة توفّر مجموعةً من الأدوات تتضمن ما تحتاجه للتعامل مع قاعدة البيانات، فهي تقدّم طرائق للتعامل مع الجداول والسجلات ونتائج الاستعلامات، إضافةً إلى التعديل على قاعدة البيانات من تعديل الجداول وحذفها وغيرها من الأوامر.

مكوّن التعامل مع أنموذج كائن المستند DOM) Document Object Model)

يوفر مجموعة من الأدوات التي تساعدك على التعامل مع صفحات الـ (HTML (9.

مكوّن التعامل مع الملفات laminas-file

يمنحك مكوّنُ التعامل مع الملفات laminas-file أداتين هما الـ ClassFileLocator المُستخدَمة لإيجاد ملفات تحتوي شيفرات مصدرية مكتوبة بلغة الـ PHP، إضافةً إلى المكوّن الفرعي Transfer المُستخدَم في إدارة عملية رفع الملفات على الموقع، وإعطاء تقارير عن حالة تقدُّم الملف الذي يُرفَع. إضافةً إلى مجموعة من الأدوات لتغيير اسمه أو التحقق من صحته؛ مثل تحديد عدد الملفات المرفوعة ونوع الملف وحالة الضغط وغيرها من خيارات التحقق (10). 

مكوّن التعامل مع نماذج صفحات الويب Form Elements

هو مجموعة من عناصر الدخل المستخدمة في الحصول على بيانات من المستخدم، يُقدمها إليك هذا المكون مع إمكانية التحقق من صلاحية الدخل على نحو مباشر، والحماية من هجمات تزوير الطلب عبر المواقع (11) (Cross Site Request Forgery attacks (CSRF. 

مكوّن التعامل مع الترجمات Internationalization

يزوّدك بمجموعة من الأدوات لدعم ترجمة موقعك إلى أكثر من لغة، إضافةً إلى أدوات تساعدك على عرض البيانات بناءً على المنطقة أو اللغة المستخدمة في الترجمة (12). 

مكوّن التعامل مع التوجيه Routing

عندما يطلب المستخدم صفحة ويب، يحتاج التطبيق إلى طريقة لربط الصفحة المطلوبة مع المتحكم (Controller) الخاص بها. يساعد مكوِّن التعامل مع التوجيه على إعادة توجيه طلبات HTTP (الصفحات التي يطلبها المستخدم) إلى المتحكم المناسب (13). 

مكون التحقق من صحة البيانات Validators

عندما يعبِّئ المستخدم معلوماته في أنموذج ما ليرسلها إلى جهة ما؛ يجب التحقق من صحة هذه البيانات. على سبيل المثال: التحقق من أنّ المستخدم لم يترك حقلًا فارغًا، أو القيمة التي أدخلها هي رقم وليست نصًّا. يقدّم هذا المكون مجموعة من الأدوات للتعامل مع التحقق من صحة قيم البيانات (14). 

مكون المُصادقة Authentication

تكون مسؤولية هذا المكوّن في مصادقة عمليات التحقق من المستخدم وتسجيل الدخول إلى النظام (15).  

مكون التشفير laminas-crypt

الهدف الأساسي من مكون التشفير هو توفير طريقة سهلة وآمنة باستخدام لغة الـ PHP لحماية البيانات المهمة والمصادقة عليها (16). 

إضافةً إلى توفيره مجموعة من الأدوات التي تُستخدَم في التشفير، مع العديد من الميزات منها (16):

مكون التَّنَقلات laminas-navigation

لإدارة شجرة الموقع التي تحتوي على الصفحات التي يتألف منها الموقع؛ إذ يُستخدَم مكون التَّنَقلات لإنشاء القوائم (Menu)، ومسار التصفح (breadcrumbs) الذي يُظهِر للمستخدم مسارَ الصفحة التي يقف عندها في أثناء تصفحه للموقع، والروابط (Links) وخريطة الموقع (sitemaps) التي تظهر له جميع الصفحات الرئيسية الخاصة بالموقع التي يستطيع زيارتها (17). 

المجتمع الخاص باللغة

دُعِم إطار Laminas Project من مجتمع كبير؛ إذ يحتوي على توثيق كبير تجده عن طريق الرابط الآتي: هنا

بالإضافة إلى وجود منتدى خاص بهذا الإطار يستطيع عن طريقه المطورون مساعدة بعضهم البعض والتواصل مع مطوّري الإطار. 

تستطيع زيارة هذا المنتدى عبر الرابط الآتي: هنا

المصادر:
1. PHP: History of PHP - Manual [Internet]. Php.net.2022 [cited 6 August 2022]. Available from: هنا

2. O'Phinney MW. Endings and Beginnings: Goodbye, and Please Welcome the Laminas Project! - Blog - Zend Framework [Internet]. Framework.zend.com. 2020 [cited 6 August 2022]. Available from: هنا

3. About Zend and PHP | Zend by Perforce [Internet]. Zend.com.2022 [cited 6 August 2022]. Available from: هنا

4. About - Zend Framework. Framework.zend.com. 2022 [cited 6 August 2022] Available from: هنا

5. About the Laminas Project - Laminas Project - Enterprise PHP Framework [Internet]. Getlaminas.org. [cited 6 August 2022]. Available from: هنا;

6. Laminas Components Documentation [Internet]. Docs.laminas.dev.2022 [cited 6 August 2022]. Available from: هنا

7. Mezzio, by Laminas [Internet]. GitHub.2022 [cited 6 August 2022]. Available from: هنا

8. GitHub - laminas/laminas-mvc: Laminas's event-driven MVC layer, including MVC Applications, Controllers, and Plugins [Internet]. GitHub.2022 [cited 6 August 2022]. Available from: هنا

9. laminas-db - Laminas Docs [Internet]. Docs.laminas.dev.2021 [cited 6 August 2022]. Available from: هنا

10. laminas-file - Laminas Docs [Internet]. Docs.laminas.dev.2020 [cited 6 August 2022]. Available from: هنا

11. laminas-form - Laminas Docs [Internet]. Docs.laminas.dev.2022 [cited 6 August 2022]. Available from: هنا

12. laminas-i18n - Laminas Docs [Internet]. Docs.laminas.dev.2022 [cited 6 August 2022]. Available from: هنا

13. Routing - laminas-router - Laminas Docs [Internet]. Docs.laminas.dev.2022 [cited 6 August 2022]. Available from: هنا

14. Introduction - laminas-validator - Laminas Docs [Internet]. Docs.laminas.dev.2022 [cited 6 August 2022]. Available from: هنا

15. laminas-authentication - Laminas Docs [Internet]. Docs.laminas.dev. 2022 [cited 7 August 2022]. Available from: هنا

16. Introduction - laminas-crypt - Laminas Docs [Internet]. Docs.laminas.dev. 2020 [cited 7 August 2022]. Available from: هنا

17. Introduction - laminas-navigation - Laminas Docs [Internet]. Docs.laminas.dev. 2022 [cited 7 August 2022]. Available from: هنا