laravel interview

Laravel Interview Part 3

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 ونستطيع من خلالها معرفة مكان الخطأ في اي صفحة ونوع هذا الخطأ ولو شغلنا الكود سينتج عنه هذا في المتصفح

1 jpg

وهذه الطريقة أفضل من الطرق الأولى سواء في شكل عرض الخطأ أو طريقة استكشافه والوصول إليه

 ولتحديد ما هو الخطأ بالتحديد الذي حدث نكتب داخل 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','حدث خطأ وجاري اصلاحه');
         }
    }

				
			

وهنا سوف يعرض لنا في المتصفح تفاصيل الخطأ لكي نقوم باصلاحه

Laravel Interview Part 3

العنوان الثالث: ما هي وظيفة الـ 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 ومعرفة الوقت المستغرق للاستعلامات والتعامل مع البيانات

Laravel Interview

ويمكنك عند الاستعلام تحديد الأعمدة التي تريد عرضها فقط دون استدعاء كل الأعمدة الموجودة في الجداول واستخدام العلاقات 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 الخاص بالاستضافة لتشغيل الموقع

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Scroll to Top