المعلوماتية > برمجيات
"laravel" الإطار البرمجبي لمصمّمي الويب
هل تحب الأكواد الجميلة؟ نحن أيضاً!
هذه هي العبارة التي اختارها مطورو الإطار البرمجي "laravel" لتظهر عند زيارتكم الأولى للموقع. ولا شك أبداً أن مطوري هذا الإطار البرمجي قد راعوا الدقة العالية في برمجة هذا الإطار ليكون جميلاً وسهلاً ومختصراً قدر الإمكان.
يختصر laravel الكثير من العمل البرمجي، ويمتاز بالسرعة والأمان، هذا بالإضافة إلى شرحه الوافي والواضح والذي يجعل تعلمه سهلاً حتى على المبتدئين. حتى ضمن صفحات الإطار البرمجي فإننا نلاحظ أن المطورين يهتمون بشرح التعليمات البرمجية التي طوروها ضمن التعليقات.
بنية الإطار البرمجي:
يعمل الإطار البرمجي "laravel" وفق معيارية "MVC" كالتالي:
١- Models: توجد مباشرة بداخل ملف App بدون مجلد بل تتموضع بداخله مباشرة.
٢- Controller: بداخل مجلد App ثم Http.
٣- View: بداخل مجلد resourses.
مع العلم أنه يحتاج إلى إصدار PHP >= 5.5.9 لتشغيله.
التنصيب:
من أهم ميزات الإطار البرمجي "laravel" أنه يعدّ كمكتبة من مكتبات php في موقع المكتبات الخاص باللغة والذي يسمى "Composer"؛ حيث يتم تنصيبه آلياً بعد تنصيب الـ"Composer" عبر التعليمة البرمجية التالية:
composer global require "laravel/installer"
ومن ثم نستطيع تنصيب نسخة جديدة من "laravel" كل مرة عبر التعليمة التالية:
laravel new blog
routing
يمنع الإطار البرمجي "laravel" أي طلب لأي ملف أو صفحة بداخله إلا التي يتم وضعها في ملف routs وذلك حفاظاً على الأمان والخصوصية في الموقع ويمكن إضافة العديد من الخيارات لطلب الـ"routing" مثل اشتراط تسجيل الدخول أو اشتراط صلاحيات معينة لمنفذ الطلب كأن يكون مديراً للموقع مثلاً.
كما يمكن معالجة الخيارات البرمجية المطلوب إرسالها عند طلب الصفحة مباشرة دون الرجوع إلى ملف "Controller" ولكنه خيار غير مفضل للحفاظ على تنظيم البرنامج.
يقوم ملف "rout" بتحويل كافة الطلبات من نوع GET وPost وPatch وDelete إلى controller المخصص لها مع تخصيص اسم التعليمة البرمجية المطلوب منها معالجة الطلب وإرسال النتيجة للمستخدم
مثال:
Route::get('profile'،'UserController@showProfile');
نلاحظ أن التعليمة مقروءة بسهولة عبر اللغة الإنكليزية المبسطة حيث يقول البرنامج عالج طلبات الـ"get" المتبوعة بكلمة 'profile' عبر الـ"Contoller" المسمى 'UserController وفق التعليمة showProfile'.
وفي حال كانت الطلبات لا تحتاج إلى معالجة فيمكن تخصيص صفحة "View" لتظهر مباشرة للمستخدم دون المرور بالـ"Contoller" أبداً.
Route::get('user'، function () {
return view('user');
})
ماذا لو كان طلب الصفحة يحتاج للتحقق من تسجيل الدخول قبل عرضها؟ الأمر بسيط جداً مع "laravel"؛ فقد جهز لكم مسبقاً نظام Authintication مع تسجيل دخول وتسجيل مستخدم جديد وتسجيل خروج ونسيان كلمة مرور بالإضافة إلى خدمة تذكرني وكل ما بقي عليكم إضافة كود التحقق قبل طلب الصفحة كالمثال التالي:
Route::group(['middleware' => 'auth']، function () {
Route::get('/admin'، function () {
return view('admin');
});
});
بقي أن نذكر ان ملف الـ"routes" موجود داخل مجلد http مباشرة.
Middleware:
قد يبدو الاسم واضحاً! التعليمات الوسطية والتي تتم معالجتها قبل تنفيذ الطلب وهي عبارة عن شروط يتم وضعها من قبل المبرمج ليتم التحقق منها قبل كل طلب لصفحات معينة. وكما رأينا في المثال السابق، فقد طلبنا التحقق من تسجيل الدخول قبل الدخول إلى لوحة تحكم الأدمن. ولكن ماذا لو كان هناك عدة صلاحيات للمستخدمين؟ أو مثلاً تريد التحقق من أن المستخدم قد قام بتفعيل حسابه عبر البريد الإلكتروني أو أي شرط يخطر في بالك تريد برمجته.
هذا هو بالضبط مهمة مجلد "Middleware" الموجود بداخل ملف http والذي يعالج الطلبات قبل إرسالها أو استقبالها، ويمكن عمل العديد من الملفات بداخله واختيار الصفحات المطلوب التحقق منها إما عبر الطلبات routs أو عبر ملف Requests.
مهمة هذا الملف هي مهمة سابقه نفسها، ولكنها مخصصة للنماذج "forms"، فجميع المبرمجين يعلمون بأهمية وجود نظام validation للنماذج لمنع الإدخالات الغريبة والمخالفة في الحقول وهي بالضبط مهمة Requests.
Blade Templates:
قد يلاحظ المبرمجون الجدد في الإطار البرمجي laravel إضافة غريبة لملفات الـ"view" وهي كلمة "blade"؛ وهي نظام مخصص لتسهيل عمل مصممي الويب وتنظيم عملهم حيث أنها توفر العديد من الاختصارات للكود البرمجي بداخل الصفحات حيث اعتدنا ملاحظة النمط التالي لأسماء ملفات العرض index.php ولكن مع نظام blade يكون اسمه كالتالي index.blade.php.
يقوم نظام "Blade Templates" بتوزيع أقسام الصفحة الواحدة على عدة أقسام ليتم استدعاؤها تلقائياً مع كل طلب للصفحة، فلو كان الموقع يحتوي على شريط قائمة علوي يجب ظهوره في كل صفحة فكل ما علينا هو برمجته مرة واحدة ومن ثم يتم استدعاؤه عبر التعليمة التالية:
@include('header')
ليقوم تلقائيا باستدعائه دون الحاجة لإعادة كتابته من جديد.
وبهذا يوفر عليك الكثير من التكرار الذي لن تحتاجه بعد الآن فيمكنك استدعاء الـ"sidebar" والـ"footer" والـ"header"، ومن ثم تجميعهم في ملف واحد واستدعاؤه في كل صفحة كقالب كامل.
Service providers:
تقوم بمعالجة أوامر برمجية لكل view في الموقع دون الحاجة لتكرارها في كل controller.
Artisan:
نظام يقدم باقة من الاختصارات البرمجية لإنشاء ملفات بداخل البرنامج ويتم استدعاؤها من الـTerminal (الطرفية).
Migration:
لتوليد جداول قواعد البيانات بشكل تلقائي بعد ملء الحقول المطلوبة ونوعها وإضافة علاقات بداخلها.
Query Builder:
نظام سهل التعامل لمعالجة الطلبات من قواعد البيانات.
laravel-spark:
أطلق مطورو الإطار البرمجي تحديثاً يتيح إضافة خيارات الدفع الإلكتروني لموقعك، حيث لاحظوا أن معظم المبرمجين يقضون أوقاتاً طويلة في تجهيز تقنية الدفع الإلكتروني للمتاجر الإلكترونية او المواقع الربحية لهذا وفروها كخدمة إضافية يمكن إضافتها إلى ملفات الموقع أو تحميل الإطار البرمجي متضمناً ملفات تلك الخدمة.
ومهما ذكرنا في المقال فإن خصائص ومميزات laravel أكثر بكثير، ويمكنكم مشاهدة دورة تعليمية كاملة للإطار البرمجي من الموقع التالي: هنا
كما يمكنكم قراءة الشرح الخاص بالإطار البرمجية من الرابط التالي: هنا
المصادر: