أُطر عمل PHP PHPixie
المعلوماتية >>>> برمجيات
(1)
ويتميز PHPixie بكونه يعتمد نظام الحُزم؛ أي إنه يمكن الاستعانة بحزم خارجية طوّرها شخصٌ أو مجموعة ما وحزّمها لتؤدي وظيفة معينة بدلًا من الحاجة إلى بنائها من الصفر، كذلك إنه مصمم للعمل بمعمارية Hierarchical Model View Controller التي تُعرَف اختصارًا بـHMVC أو MVC والتي تُفصَل فيها واجهات التطبيق View عن الوظائف والإجراءات التي تنجز وظائف النظام؛ مما يسهّل عمليات بناء التطبيق (موقع الويب هنا) وكشف الأخطاء.
كذلك عمل المطوّرون على استبدال الوظائف التي تتطلب خبرة كبيرة مثل التعابير المُنتظَمة Regular expression -وهي تعابير تُستخدَم للتعرف إلى القيم ذات النمط المميز كأرقام الهواتف والبريد الإلكتروني وغيرها- بتعابير وأكواد أبسط للاستخدام، وتوفّر إمكانية استخدام قواعد البيانات غير العلاقاتيّة NoSQL؛ إذ إنها تدعم MongoDB التي تعتمد على المستندات كـ json بدلًا من الجداول والتي تُستخدَم في قواعد البيانات العلاقاتيّة، وتُعدّ سهلة التعلم لمن سبق له أن تعامل مع إطار العمل Kohana أو Codeigniter.
(1,2)
ومن أجل استخدام إطار العمل هذا؛ يجب تثبيت خادم apache ومدير الاعتماديات composer المسؤول عن المكتبات الخاصة بلغة php، إضافةً إلى نظام لإدارة قواعد البيانات مثل (mysql)، ويمكن الاستفادة من حزمتَي xampp وwampp والتي توفر كلٌّ منها خادم apache وmysql، ويبقى علينا تثبيت composer بسهولة من موقعه الرسمي.
أما فيما يخص تثبيت إطار العمل فتوجد عدة خيارات؛ إما تثبيته مع حزمة إدارة عمليات الدخول وتسجيل الحسابات في النظام وإما تثبيته بدونها، ونحن سنشرح الأولى منها. علمًا أنه في أثناء إعداد المقال اعتُمِدَ على الدليل الموجود في Github، إضافة إلى التواصل مع رومان تسيوبا Roman Tsiupa مؤسس الإطار، وتمّ ذلك على نظام تشغيل Windows 10 باستخدام xampp المذكور مسبقًا، وفي xampp يجب وضع ملفات المشروع في المجلد الفرعي htdocs، ولنبدأ بالخطوات:
1. نفتح موجّه الأوامر cmd، وبعدها نتوجه إلى مسار المجلد htdocs.
2. نستخدم composer لإنشاء المشروع وجلبه من مخزن Github.
composer create-project phpixie/project-auth project
إذ إنّ project هو اسم المشروع ويمكن اختيار أي اسم آخر.
3. الآن يجب نقل الموجه route إلى مسار المشروع؛ الذي يُعدّ في حالتنا مسارًا فرعيًّا، والمسار الافتراضي في phpixie هو المسار "/"، في حين يكون عند استخدام xampp هو "project/web/"، وعليه يجب إنجاز بعض التعديلات.
4. الصورة رقم (1): تغيير الموجه في ملف .htaccess
Image: SYR RES
الصورة رقم (2): تغيير الموجه في ملف http.php
Image: SYR RES
5. إنشاء قاعدة بيانات وإنشاء ثلاثة جداول فيها مثلًا.
الصورة رقم (3): إنشاء الجداول المطلوبة في قاعدة البيانات
Image: SYR RES
6. تعريف المشروع على قاعدة البيانات.
الصورة رقم (4): إضافة معلومات الاتصال الخاصة بقاعدة البيانات في المشروع.
Image: SYR RES
7. إنشاء حساب في النظام.
الصورة رقم (5): تجربة إنشاء حساب جديد
Image: SYR RES
الصورة رقم (6): تُظهر نجاح عملية تسجيل الدخول باستخدام الحساب الجديد.
Image: SYR RES
وهكذا أصبح المشروع جاهزًا للعمل والتعديل عليه وإضافة الخدمات التي تريد مُستعينًا بالموقع الخاص بإطار العمل.
مكونات الإطار الأساسية ومكتباته: (3)
مكتبة (PHPixie Authentication library): هي المكتبة المسؤولة عن عمليات المصادقة وتسجيل الدخول إلى النظام، وتستعمل أفضلَ معايير وتوابع التشفير مثل password_hash المتوفر في نسخة php 5.5 والأعلى منها مع الحرص على التوافق مع النسخ الأقدم.
مكون خاص بالـ DATABASE: يؤمّن إمكانية بناء استعلام Query Builder مُوحَّد بصرف النظر عن قاعدة البيانات، مع دعمه لعدة قواعد بيانات، مثل: MySQL, PostgreSQL, SQLite, MongoDB,
أداة (DI-Debug): هي أداة تساعد المطورين على الكشف عن الأخطاء وتتبُّعها في أثناء عملية التطوير، وغالبًا ما يُلغى تفعليها عند وضع الموقع قيد العمل (أي في وضع Production).
(HTTP)؛ PSR-7: هو بروتوكول (واجهة) interface عمل لتحديد كيفية عمل طلبات (Http Request) والتي تمثل العصب الرئيس في عمل تطبيقات الإنترنت والتواصل بين واجهات المستخدم client side وَالخادم server side .
مكتبة (IMAGE): وتمثل مكتبة بسيطة تُسهّل التعامل مع الصور، وهي بالأساس تستخدم المكتبات الأساسية في PHP المتخصصة في التعامل مع الصور (GD-Imagick-Gmagick )، لكنها تُبسِّط إجرائيّات التعامل معها.
مكتبة (MIGRATE): هي المكتبة المسؤولة عن تهجير migrate جداول قاعدة البيانات وبِنيتِها، أي تُجهَّز الملفات المسؤولة عن كل جدول في ملفات PHP خاصة، ويمكن أيضًا إدخال قيم مبدئية إلى هذه الجداول عند إنشائها، وتُعدّ من أفضل الطرائق في التعامل مع قواعد البيانات من الناحية العملية.
(ORM) اختصارًا لـObject-relational mapping: عبارة عن تقنية تُستخدَم من أجل تخزين البيانات واسترجاعها وحذفها وتحديثها في قواعد البيانات العلائقية، وتمثل منهجًا في بناء الاستعلامات أبسط من (Query Builder) في التعامل مع العلاقات المعقدة؛ لكنّه أبطأ منه نسبيًّا، وهو يُماثل Eloquent ORM الموجود في إطار عمل Laravel.
مكتبة (PAGINATE): تُعدّ من المكتبات الشائعة جدًّا في العديد من أُطر العمل، ومَهمتها فهرسة نتيجة الاستعلام؛ أي جَلب البيانات على دفعات، ويمكن تشبيه كل دفعة بصفحة من صفحات الكتاب؛ مما يساهم في تحسين الأداء.
(Template): هو مُحرّكُ توليد خاص بالقوالب المُعدّة مُسبقًا خاص بتسهيل التعامل مع صفحات الـ HTML، ويوافق PHP Balde المُستخدم في Laravel.
(VALIDATION): التحقق من القيم؛ عندما يُرسَل أو يُؤكَّد الـForm بغرض بناء استعلام والحصول على نتيجة ما، يجب التحقق من صحة هذه القيم؛ مثلًا: لدي حقل مخصص من أجل اسم المستخدم فمن البديهي أن يكون نمطه نصيًّا String، كذلك أنني أريد تحديده بطول معيّن، في العادة تُقيَّد هذه القيم من قبل الواجهات (صفحات الHTML)، لكن يجب أيضًا أن يتم التأكد منها من جانب الخادم -في حال حاول أحدهم العبث-، وذلك للوقاية من حقن قواعد البيانات SQL Injection وغيرها- أي استغلال ثغرات أمنيّة في طبقة قواعد البيانات وإدخال تعليمات sql من أجل الوصول إلى بيانات قد يكون غير مُصرَّح بالوصول إليها-، وأحيانًا لايكون هناك صفحات HTML وما أُقدمه هو API كخدمة جانبية في الموقع أو لبناء تطبيق مخصص لأجهزة الأندوريد مثلًا (3).
مجتمع اللغة:
يوجد مجتمع خاص لـ PHPixie جيد ومفيد؛ إذ يمكنك الحصول على إجابة لسؤالك في غضون دقائق من طرحه في الدردشة PHPixie/Hotline من قبل مطور الإطار نفسه وغيره من المستخدمين هنا كذلك توجد مدوّنة تُوضَع فيها شروحات عن PHP عمومًا وPHPixie خصوصًا هنا بدءًا من أبسط الأمور وإنشاء مشروع جديد، وصولًا إلى التعامل مع الشبكات العصبونيّة الصنعية Artificial Neural Network في لغة PHP. (من أجل معرفة المزيد عن الشبكات العصبونية يُمكنك الاطلاع على المقال الآتي: هنا)
قد لا يكون PHPixie إطار العمل الأفضل والأكثر حظًا في مجال العمل مثل Laravel؛ لكنّها تجربة يمكن أن يقال عنها أنها ناجحة.
المصادر:
2. PHPixie - Modern, Fast and Secure PHP Framework [Internet]. phpixie.com. [cited 12 August 2022]. Available from: هنا
3. PHPixie Components [Internet]. phpixie.com. [cited 12 August 2022]. Available from: هنا