أُطر عمل PHP؛ Laravel
المعلوماتية >>>> برمجيات
لمحة تاريخية عن إطار العمل:
كان إطار عمل Codeigniter هو الأكثر شعبية واستخدامًا بين أطر PHP في عام 2011، وذلك نظرًا إلى سهولة تعلّمه، لكنّه كان يفتقر إلى بعض الميزات مثل إقرار المستخدم (user authorization) والمصادقة (authentication). ولذلك؛ بدأ مهندس البرمجيات تايلور أوتويل Taylor Otwell بتطوير إطار العمل Laravel ليغدو بديلًا عن (1) Codeigniter.
تعريف بإطار العمل:
Laravel هو إطار عمل PHP لتطبيقات الويب، بُنِي بسياق أنيق ومعبر.
يُؤمِن فريق Laravel أنّ العمل يكون مُرضيًا عندما تكون عملية التطوير ممتعة ومبتكرة؛ إذ يسهّل إطار عمل Laravel تطوير تطبيقات الويب عن طريق تخفيف أعباء تنفيذ المهمات الشائعة الاستخدام في العديد من المشاريع. وقد أُصدِرت أول نسخة رسميًّا في تاريخ 9 حزيران (يونيو) 2011 (1).
تجهيز بيئة العمل لاستخدام إطار العمل:
يوجد خياران لتجهيز بيئة العمل:
1) استخدام Laravel Homestead: هو صندوق برمجي معبَّأ مسبقًا مُقدَّم من شركة Vagrant، يؤمّن بيئة تطوير محلية لمشاريع Laravel دون الحاجة إلى تثبيت PHP وخادم الويب (web server) أو أي برنامج آخر على الجهاز المحلي. إن صناديق Vagrant قابلة للإزالة كليًّا، ولذلك؛ في حال حدوث مشكلة ما يمكن التخلص منهم وإعادة إنشائهم من جديد؛ مما يلغي قلق المستخدم تجاه العبث بنظام التشغيل. يعمل Homestead على نظم التشغيل الآتية: Windows وMac وLinux. إضافةً إلى أنه يشمل المتطلبات الآتية: Nginx وPHP وMySQL وPostgreSQL وRedis وMemcaches وNode وجميع المتطلبات الأخرى التي تحتاجها تطبيقات (Laravel (2.
2) تثبيت جميع المتطلبات يدويًّا: يتطلب تشغيل إطار عمل Laravel 6 ما يأتي:
(3).
- تثبيت إطار العمل على الجهاز:
لاستخدام Laravel لا بُدّ من تثبيت Composer؛ الذي بدوره يُدير اعتماديتها محليًّا داخل كل مشروع، بعدها تُثبَّت نسخة اللارفيل المطلوبة (2).
وأخيرًا؛ بعد إتمام الخطوات السابقة كلها، تحتاج إلى إنشاء خادم تطوير محلي (Local Development server) لتشغيل تطبيق الويب محليًّا (على الرابط هنا) عن طريق استخدام الأمر الآتي:
php artisan serve
- أُسس عمل الإطار:
تُحدَّد مسارات Laravel كلها في ملفات المسارات الموجودة في مجلد routes، والتي تتموضع في دليل المسارات web.php، علمًا أنّ إطار العمل يُنشئ هذه الملفات تلقائيًّا.
تُعيَّن مجموعة برمجيات الطبقة المتوسطة web middleware على كل هذه المسارات، وتوفّر بدورها ميزات؛ مثل حالة الجلسة (session state) والحماية من تزوير الطلبات عبر الموقع (Cross Site Request Forgery: CSRF). (4)
مَهمتها توفير آلية مناسبة لتصفية الطلبات (Hypertext Transfer Protocol (HTTP التي تُطلَب في تطبيق الويب، فعلى سبيل المثال: تتضمن Laravel طبقة متوسطة تتحقق من مصادقة (authenticate) مستخدم التطبيق؛ في حال لم تتم المصادقة على المستخدم تُعيد الطبقة المتوسطة توجيهَهُ إلى صفحة تسجيل الدخول، أما في حال المصادقة عليه فإنها تسمح للطلب بالمضي قدمًا إلى تطبيق الويب. كذلك يمكن إضافة طبقات وسيطة لتنفيذ مجموعة مهام أخرى إلى جانب المصادقة (5).
يُسهّل Laravel مَهمة حماية تطبيقات الويب من هجمات تزوير الطلبات. وتُعدّ هذه الهجمات نوعًا من الاستغلال السيئ؛ إذ تُنفَّذ أوامر غير مصرح بها عوضًا عن المستخدم المُصادَق عليه (authenticated user).
يولّد Laravel تلقائيًّا رمز CSRF لكل جلسة نشطة للمستخدم، ومهمة هذا الرمز token هو التحقق من أنّ المستخدم المُصادَق عليه هو الذي يقدّم الطلبات في تطبيق الويب (6).
يمكن لوحدات التحكم تجميع الطلبات المتشابهة بالمنطق في صنف واحد. وتُخزَّن وحدات التحكم في المسار: (app/Http/Controllers (7.
تحتوي الواجهات على ملفات HTML التي يقدمها تطبيق الويب؛ مما يفصل منطق وحدات التحكم عن منطق عرض الواجهات. تُخزّن ملفات الواجهات في المسار: (resources/views (8.
نظرًا إلى كون تطبيقات HTTP هي عديمة الحالة stateless (أي لا تستطيع الاحتفاظ بأية معلومات)؛ توفر الجلسات طريقة لحفظ معلومات المستخدم بواسطة عدة طلبات.
يمتلك Laravel مجموعة متنوعة من أكواد الجلسات (Session backends)، ويمكن الوصول إليها عن طريق واجهة برمجة تطبيقات موحدة (API (9.
توفر Laravel عدة طرائق للتحقق من صحة بيانات تطبيق الويب، ويستخدم صف وحدة التحكم في Laravel على نحو افتراضي ميزةَ ValidatesRequests التي تؤمّن طريقة ملائمة للتحقق من صحة طلبات HTTP الواردة باستخدام مجموعة قوية من قواعد التحقق المتنوعة (10).
ميزات إطار العمل:
تُعدّ المصادقة أهم عامل في تطبيقات الويب، ويحتاج مطورو الويب إلى قضاء كثير من الوقت في كتابة الكود البرمجي الخاص بالمصادقة. ولكن؛ يحتوي Laravel على نظام مصادقة داخلي، ولذلك؛ من أجل عمل تطبيق الويب يبقى على المستخدم مهمة تعريف النماذج (models) والواجهات (views) ووحدات التحكم (controllers).
تتضمن Laravel على ORM مبنية مسبقًا مع سجل PHP تنفيذي نشط ActiveRecord. يسمح ORM للمطورين بكتابة استعلامات لجداول قاعدة البيانات عن طريق استخدام لغة PHP دون التطرق إلى كتابة أي كود بلغة SQL؛ مما يوفر تكاملًا سهلَ التحقق بين المطورين وقواعد البيانات عن طريق إعطاء كل جدول أنموذجًا مقابلًا له.
توفر هذه البنية عملية تطوير سريعة؛ فمن الممكن أن يعمل أحد المبرمجين ضمن الفريق الواحد على الواجهات (View) في حين يعمل الآخر على وحدة التحكم (Controller) لبناء منطق عمل تطبيق الويب. كذلك توفر هذه البنية عدة واجهات لكل أنموذج، وتجنب تكرار الكود البرمجي لأنها تفصل منطق العمل عن منطق العرض.
Image: https://miro.medium.com/max/1080/0*Qf1s2lG86MjX-Zcv.jpg
رسم توضيحي لآلية عمل بنية MVC
تسمح Laravel بتوسيع قاعدة البيانات دون تحميل المطورين عبء بذل الكثير من الجهد لإجراء التغييرات. إنّ عملية توليد تهجير لقاعدة البيانات (migration) وإدارتها في Laravel هي عملية آمنة ومثبتة بالكامل، وتُنجَز العملية بأكملها باستخدام لغة PHP عوضًا عن لغة SQL.
هي أداة مضمنة لسطر الأوامر يوفّرها إطار العمل، وهي تنفذ المَهمات البرمجية المتكررة؛ مما يُعفي مطوّري PHP من كتابتها يدويًّا، ومن الممكن استخدامها في مَهمات أخرى أيضًا؛ مثل إنشاء هيكل الكود البرمجي وبناء قاعدة البيانات وعمليات توليد تهجيرات البيانات الخاصة بها وتنفيذها؛ مما يسهل إدارة قواعد بيانات النظام. كذلك تولّد ملفات بنية MVC عن طريق تعليمة في سطر الأوامر، إضافةً إلى أنه بإمكان المطوّرين إنشاء تعليمات خاصة بهم لتنفيذ أوامر معينة (10).
- المجتمع الخاص باللغة:
يضم موقع laracasts بعض الدورات التعليمية الخاصة بإطار العمل، إضافةً إلى مساحة واسعة مخصصة لطرح الاستفسارات ومناقشة المشكلات التي من الممكن أن تواجه المطوّرين.
للاطلاع على الموقع: هنا
المصادر:
2. Laravel Homestead [Internet]. Laravel.com. 2022 [cited 04 February 2022]. Available From: هنا
3. Installation [Internet]. Laravel.com. 2022 [cited 16 April 2020cited 04 February 2022]. Available From: هنا
4. Routing [Internet]. Laravel.com. 2022 [cited 16 April 2020cited 04 February 2022]. Available From: هنا
5. Middleware [Internet]. Laravel.com. 2022 [cited 04 February 2022]. Available From: هنا
6. CSRF Protection [Internet]. Laravel.com. 2022 [cited 04 February 2022]. Available From: هنا
7. Controllers [Internet]. Laravel.com. 2022 [cited 04 February 2022]. Available From: هنا
8. Views [Internet]. Laravel.com. 2022 [cited 04 February 2022]. Available From: هنا
9. HTTP Session [Internet]. Laravel.com. 2022 [cited 04 February 2022]. Available From: هنا
10. Validation [Internet]. Laravel.com. 2022 [cited 04 February 2022]. Available From: هنا