Table of Contents
العنوان الأول: ماذا تعرف عن Laravel Template Engine ؟
Laravel Interview Part 3
عبارة عن محرك لإنشاء القوالب موجود في اطار العمل لارافيل ويمكن كتابة كود php بداخله حيث يوفر لك كتابة الجمل الشرطية If والحلقات Loop وغير ذلك الكثير ولكي ننشيء Blade Template نذهب إلى المسار resources/views ثم ننشيء ملفات تنتهي بامتداد blade.php
مثال: index.blade.php
العنوان الثاني: كيف يتم اكتشاف الأخطاء في تطبيقات Laravel وتصويبها؟
هل تعرف أولاً عن قيمة true او false الخاصة بـ APP_DEBUG الموجودة في ملف env
سنأخذ مثال عن طريقة عرض الأخطاء عند القيمة true وهي الافتراضية
لو كتبنا الكود التالي في PostController
public function index(){
return view('posts.index',compact('posts'));
}
فكما ترى لايوجد متغير يسمى posts الذي وضعناه داخل compact فماذا سيحصل إذا استدعينا $posts في صفحة posts
سينتج هذا الخطأ
ErrorException
compact(): Undefined variable $posts
ولكي تتجاوز هذا الخطأ قم بتغيير قيمة APP_DEBUG إلى false وعند طلب صفحة posts سيذهب بك إلى صفحة
500|Server Error
وهناك طريقة اخرى لطريقة اكتشاف الاخطاء وطرق الوصول إليها وطرق عرضها أمام المستخدم بشكل غير مزعج
مثال: استخدام try catch
public function index(){
try {
return view('post.index',compact('posts'));
}catch (Exception $exception){
return view('posts.errors')->with('error_type','حدث خطأ وجاري اصلاحه');
}
}
لقد انشأنا صفحة خاصة بالاخطاء تسمى errors داخل مجلد posts ونستطيع من خلالها معرفة مكان الخطأ في اي صفحة ونوع هذا الخطأ ولو شغلنا الكود سينتج عنه هذا في المتصفح
وهذه الطريقة أفضل من الطرق الأولى سواء في شكل عرض الخطأ أو طريقة استكشافه والوصول إليه
ولتحديد ما هو الخطأ بالتحديد الذي حدث نكتب داخل catch هذا السطر
dd($exception->getMessage());
مثال
public function index(){
try {
return view('post.index',compact('posts'));
}catch (Exception $exception){
dd($exception->getMessage());
// return view('posts.errors')->with('error_type','حدث خطأ وجاري اصلاحه');
}
}
وهنا سوف يعرض لنا في المتصفح تفاصيل الخطأ لكي نقوم باصلاحه
العنوان الثالث: ما هي وظيفة الـ Facade في Laravel ؟
تعتبر الواجهات facade من المفاهيم المهمة في لارافيل وهي التي سوف تساعدك لإنشاء مشاريع قوية تساعدك هذه الواجهات من الوصول للدوال الغير ثابتة وتحويلها إلى دوال ثابتة
هل لاحظت في ملف web.php
كيف يعمل Route class وهذا من خلال تضمين السطر التالي حيث يرث من facade
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return view('welcome');
});
العنوان الرابع: ما الفرق بين Authentication و Authorization في Laravel؟
Authentication أو المصادقة: وهي التأكد من صحة البيانات المدخلة بواسطة المستخدم واعتمادها في الوصول إلى مسارات معينة في حالة صحة البيانات واعتمادها أو الرجوع بهم إلى مسار آخر في حالة عدم صحة البيانات أو عدم اعتمادها
Authorization أو التفويض: هي التأكد هل هناك صلاحيات معينة للمستخدمين المسجلين والمعتمدين أو صلاحيات كاملة أو صلاحيات جزئية سواء الوصول لمسار معين أو عرض صلاحيات دون اخرى
مثال على Authentication تسجيل دخول مستخدم والتحقق من اسم المستخدم وكلمة السر وتفعيل المستخدم
مثال على Authorization مصرح لمستخدم معين اضافة المقالات والتعديل عليها وغير مصرح للمستخدمين الآخرين غير الوصول إليها فقط
العنوان الخامس: ما هي مبادئ SOLID ؟
– مبدأ المهمة الواحدة (SRP) Single responsibility principle :
وهذا ما يشير إليه حرف S ويعني أن كل كائن يجب أن تكون له مهمة واحدة فقط
– مبدأ المفتوح المغلق (OCP) Open-closed principle :
وهذا ما يشير إليه حرف O ويعني أن البنية البرمجية يجب أن تكون متاحة للتطوير وغير قابلة للتعديل
– مبدأ استبدال ليسكوف (LSP) Liskov substitution principle:
وهذا ما يشير إليه حرف L ويعني استبدال كائنات بكائنات أخرى فرعية دون التأثير على صحة البرنامج
– مبدأ فصل الواجهة(ISP) Interface segregation principle :
وهذا ما يشير إليه حرف I ويعني تقسيم الواجهات أو الفئات الكبيرة جدًا إلى واجهات أصغر
– مبدأ عكس التبعي (DIP) Dependency inversion principle :
وهذا ما يشير إليه حرف D ويعني جعل الوحدات عالية المستوى مستقلة عن تفاصيل تنفيذ الوحدات منخفضة المستوى
العنوان السادس: كيفية تحسين الاستعلامات في Laravel؟
هناك أكثر من طريقة لتسريع الاستعلامات واستدعاء البيانات من جداول قاعدة البيانات في لارافيل بغرض تقليل الوقت المستغرق ويمكنك مراقبة هذا من خلال تثبيت laravel debug bar ومعرفة الوقت المستغرق للاستعلامات والتعامل مع البيانات
ويمكنك عند الاستعلام تحديد الأعمدة التي تريد عرضها فقط دون استدعاء كل الأعمدة الموجودة في الجداول واستخدام العلاقات relationships بين الجداول أمر في غاية الأهمية لتحسين الآداء وتقسيم المهمات الكبيرة إلى مهمات صغيرة واستخدام الترقيم pagination واستخدام التخزين المؤقت للاستعلامات التي نجريها وأيضاً الاستفادة من الفهارس الموجودة في الجداول وبناء قاعدة البيانات بطريقة صحيحة ومنظمة
العنوان السابع: متى نحتاج إلى ترقية مشروع لارافيل لاصدار حديث؟
إذا كان المشروع يحتاج إلى بعض الميزات الموجودة في الاصدار الأحدث أما إذا كان المشروع يعمل ولانحتاج لإضافة جديد فقد لا نحتاج إلى الترقية لإصدار حديث
العنوان الثامن: كيف يتم رفع مشروع Laravel على استضافة؟
1- نضغط مشروع لارافيل بامتداد zip
2- نقوم بعمل export لقاعدة البيانات الخاصة بالمشروع
3- ندخل إلى cpanel الخاص بالاستضافة ونضغط على file manager ثم نضغط على upload ونختار الملف المضغوط ونقوم برفعه
4- نقوم بفك الضغط extract file للملف المضغوط داخل مسار public_html
5- ننقل كل مجلدات وملفات المشروع إلى مسار public_html
6- نحذف المجلد الفارغ الخاص بالمشروع والملف المضغوط الذي رفعناه من على الاستضافة
7- ننشيء ملف .htaccess ونتأكد من إظهار الملفات المخفية من الاعدادات الخاصة بالاستضافة حتى يظهر الملف
8- نفتح ملف .htaccess ثم نكتب الكود التالي:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*) public/$1 [L]
</IfModule>
ثم نحفظ التغييرات ونغلق الملف
9- ثم ننشيء قاعدة بيانات على الاستضافة باسم قاعدة البيانات الخاصة بالمشروع وننشيء اسم مستخدم وكلمة سر لقاعدة البيانات ونفعل جميع الصلاحيات للمستخدم الذي أنشأناه
10- ندخل إلى phpmyadmin على الاستضافة ونختار قاعدة البيانات التي أنشائناها ونضغط على import ثم نختار قاعدة البيانات الموجودة على الكمبيوتر لاستيرادها
11- نفتح ملف .env الموجود بالمشروع الذي رفعناه ونجعل APP_DEBUG إلى false و APP_URL إلى http://localhost و DB_USERNAME إلى اسم المستخدم الذي أنشأناه و DB_PASSWORD إلى كلمة السر التي أنشأناها
12- نقوم بفتح terminal على الاستضافة في cpanel ونكتب الكود التالي لربط storage مع public
1-cd public_html
2- php artisan storage:link
وبهذا يكون المشروع مرفوع على الاستضافة ونفتح domain الخاص بالاستضافة لتشغيل الموقع