سلسلة كيف تجتاز مقابلة عمل لارافيل الجزء الأول؟
Laravel Inerview
مقدمة
Laravel Interview
سوف نتعرف في هذه السلسلة عن مفاهيم أساسية عادة يتم سؤالك عنها عند اجراء مقابلة عمل معك كمبرمج أو مطور باستخدام laravel framework ويجب أن تكون ملماً بهذه المفاهيم سواء من الناحية النظرية أو من الناحية العملية وهذا ماسوف نتعلمه في هذه السلسة من خلال إلقاء الضوء على هذه المفاهيم نظرياً وعملياً وسوف يتناول الجزء الأول توضيح للمفاهيم وعناوين الموضوعات الآتية:
- ما المقوصود بـ OOP؟
- ما الفرق بين Class – Object؟
- مكونات إطار العمل لارافيل الأساسية؟
- ما هي وحدات التحكم Controller في إطار العمل لارافيل؟
- ما المقصود بالتوجيه Routing في إطار العمل لارافيل؟
- ما المقصود بـ Eloquent Model في إطار العمل لارافيل؟
- كيف يتم إنشاء Migration في إطار العمل لارافيل؟
العنوان الأول: ما المقصود بـ OOP:
OOP هي اختصار لجملة Object-Oriented Programming ويعني البرمجة كائنية التوجه وهو نموذج برمجي تم ابتكاره منذ الستينيات ويعتمد على الفئات Classes والكائنات Objects حيث يتم تقسيم البرنامج إلى وحدات أو كائنات Objects وكل كائن عبارة عن حزمة البيانات.
العنوان الثاني:ما الفرق بين Class – Object :
الفئة class والكائن object هما من أساسيات البرمجة كائنية التوجه OOP
- الفئة Class يحتوي على الخصائص والمتغيرات والدوال والكائنات
مثال على الفئة Class باستخدام لغة php
class Courses{
public $course1 = "php";
public $course2 = "javascript";
}
وهنا تم إنشاء class يسمى Courses يحتوي على Properties لها خاصية Public
- الكائنات Objects وهي الكائنات التي سوف ننشأها من الفئة Class ويمكن إنشاء اكثر من كائن من الفئة Class
مثال على الكائنات Objects
course1." now";
سوف يتم طباعة Learn php now عند تنفيذ الكود
العنوان الثالث:مكونات إطار العمل لارافيل الأساسية:
من اهم الاسئلة في Laravel Inerview يستخدم لارافيل النمط المعماري البرمجي (MVC) Architectural design pattern وهو من اشهر أنماط Software design pattern في إنشاء البرمجيات
وتتكون MVC من:
- التعامل مع الواجهات Views
- وحدات التحكم Controllers
- التعامل مع قواعد البيانات من خلال النماذج Model
وتعبتر هذه هي المكونات الأساسية لمشروع تم برمجته بإطار Laravel
العنوان الرابع:ماهي وحدات التحكم Controller في إطارالعمل لارافيل :
هي وحدات وظيفتها استقبال طلبات المستخدم من خلال التوجيه Route والتعامل مع البيانات من خلال النماذج Models وعرض هذه البيانات للمستخدم بواسطة Views
مثال على طريقة إنشاء controller
من خلال كتابة الأمر التالي
php artisan make:controller TestController
العنوان الخامس:ما المقصود بالتوجيه Routing في إطار العمل لارافيل :
التوجيه Routing مسئول عن مسارات عناوين URL من خلال التحكم في سلوك هذه المسارات من خلال إنشاء هذه المسارات وتوجيهها لمكان ما ويتم كتابة هذه الأوامر الخاصة بتوجيه المسارات داخل ملف
أنواع التوجيه Route في إطار العمل لارافيل :
- المسارات الأساسية Basic Route: وهي المسارات التي تتعامل مع مع HTTP Requests مثل GET POST PUT DELETE
مثال:
Route::get('/test', [TestController::class,'index']);
- معلمات المسار Route Parameters : وهي عبارة عن المعلمات Parameters التي يتم تمريرها بواسطة المسارات URL
مثال:
Route::get('/test/{id}', [TestController::class,'show']);
- المسارات ذات الأسماء Named Route :
مثال:
Route::get('/posts/create', [PostController::class,'create'])->name('add_new_post');
- مجموعة المسارات Routes Group :
تجميع المسارات ذات الصفات المشتركة لسهولة التعامل معها من حيث التعديل وإصلاح الأخطاء ويساعد ذلك في تنظيم المسارات داخل مشروعك
مثال:
Route::group(['prefix'=>'posts'], function(){
Route::get('/', [PostController::class,'index']);
Route::get('/{id}', [PostController::class,'show']);
Route::get('/create', [PostController::class,'create'])->name('add_new_post');
Route::post('/store', [PostController::class,'store'])->name('store');
});
- مسارات ذات الموارد Resource Route :
وهي المسارات التي تنشيء تلقائياً العمليات المسماه بـ CRUD (create , read , update , delete)
مثال:
Route::resource('test', TestController::class);
- مسارات موارد واجهة برمجة التطبيقات API Resource Routes :
مثال:
Route::apiResource('test',TestController::class);
- مسارات العودة للوراء Fallback Route :
تحديد مسار يتم تنفيذه عندما لايتطابق أي مسار مع الطلب الوارد ويجب أن يكون الكود في اخر الملف
مثال:
Route::fallback(function(){
return abort(404);
});
العنوان السادس: ما المقصود بـ Eloquent Model في إطارالعمل لارافيل :
النماذج Models هي جزء من بنية MVC وهي التي تتيح لنا التعامل مع قاعدة البيانات بشكل سهل وفعال
مثال على إنشاء نموذج Model في إطار العمل لارافيل :
من خلال الأمر التالي سوف ننشيء نموذج يسمى Post ومن خلاله سوف نتعامل مع جدول posts الموجود في قاعدة البيانات
php artisan make:model Post
والكود التالي من داخل ملف النموذج Post.php
class Post extends Model
{
use HasFactory;
protected $table_name = "posts";
protected $primary_key = "id";
protected $fillable = ['title','details'];
}
وكما ترى فإنه يتعامل مع جدول posts الموجود في قاعدة البيانات من حيث حماية الحقول مثل حقل المفتاح الأساسي وإتاحة تعبئة بعض الحقول الأخرى مثل حقلي العنوان والتفاصيل title, details
العنوان السابع: كيف يتم إنشاء Migration في إطار العمل لارافيل :
من خلال الأمر التالي سوف ننشيء جدول داخل قاعدة البيانات وسوف نقوم بتسمية الجدول posts
مثال:
php artisan make:migration create_posts_table
وسوف يتم تخزين ملف خاص بالجدول داخل مجلد migrations ، وهذا الكود من داخل الملف الذي تم إنشاءه بالفعل
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->string('details');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('posts');
}
};
وكما يتضح أمامك الجدول يحتوي على حقول id,title,details بالاضافة timestamps التي سوف تنشيء تلقائياً حقلي created_at, updated_at
ولإدراج هذا الجدول داخل قاعدة البيانات الموجودة في مشروعك عليك كتابة الأمر التالي
php artisan migrate
وبهذا يكون قد انتهى الجزء الأول من سلسلة كيف تجتاز مقابلة عمل خاصة بإطار لارافيل وسوف نتحدث إن شاء الله في الجزء الثاني عن موضوعات أخرى مهمة لا تخلو منها الأسئلة التي سوف توجه إليك أثناء إجراء مقابلات العمل الخاصة بإطار لارافيل