ما هو Laravel لارافل ؟ تعرف على أهم اطار عمل للغة PHP

ما هو Laravel لارافل ؟ تعرف على أهم اطار عمل للغة PHP

مقدمة

في عالم الويب شديد التنافسية , ان كنت فعلاً تريد البقاء فعليك اذاً دائماً تطوير مهاراتك , لم يعد عالم برمجة الويب مكاناً للمبرمجين الحقيقيين فقط , و لنكن واقعيين للحظة هنا , لقد أصبح اي مستجد في عالم البرمجة يبحث عن عمل في مجال الويب ويبدأ تعلم الويب , ربما لأنه الأسهل او لأن الطلب عليه كبير , بكلا الحالتين خلق هذه الأمر حالة حرب مستمرة بين المنافسين , ولتكون انت الطرف القوي عليك اذاً بالأسلحة القوية , أعرفك اليوم على Laravel لارافل , ربما يكون قد تعدى مرحلة القنبلة الذرية كما ذكرنا في مقال سابق عن محرك Sass ل Css , من الواضح اننا اليوم نتحدث عن القنبلة الهيدروجينية الخاصة ب PHP ! سارع بامتلاكها لابادة أعدائك والفوز بالمعركة ...

ما هو لارافل Laravel ؟

ببساطة , لارافل Laravel هو اطار عمل خاص بلغة php سيجعلك تقع حرفياً في حب هذه اللغة حتى وان كنت مصمم في الاساس , يقدم لارافل بيئة عمل متكاملة لكل ما تحتاجه او قد تحتاجه في اي فترة مستقبلية من حياتك المهنية , لارافل Laravel مبني على طريقة MVC الشهيرة التي تفصل ال Model عن View عن Controller , مما يوفر لك بيئة عمل سلسة وسهلة , وربما لحد الآن لم تستطع استيعاب ماهية لارافل Laravel تماماً , لا داع للقلق فالسطور القادمة كفيلة بمساعدتك للدخول الى بداية مشوارك في تعلم لارفل Laravel.

سنقدم في هذه المقالة المطولة تفاصيل كثيرة عن اطار العمل الكبير هذا , لذلك , نأمل عند انتهائك من قراءة هذه المقال ستجد نفسك على دراية واسعة بلارافل وستجد الطريق بدأ أمامك للبحث عن دورات تعليمية.

لم علي الاهتمام بتعلم لارافل Laravel ؟

لنطرح الأمر على شكل نقاط , ومن ثم نناقشها واحدة تلو الأخرى سنبدأ بأهم ميزة , لم سمينا لارافل أنه أفضل اطار عمل php ؟

واسع الانتشار

اطار عمل لارافل Laravel هو أكثر اطر عمل php انتشاراً , وبعملية حسابية بسيطة نستنتج أن الانتشار الهائل = مصادر هائلة للتعلم , وهنا يكمن بيت القصيد في تفضيل لارافل عن غيرها من المنافسين .

السهولة

كمعظم أطر العمل التي تعتمد بنية MVC , ستجد أن المصطلح بطبيعته متقدم قليلاً فهو تقريبا المرحلة المتقدمة من OOP (البرمجة كائنية التوجه) التي سبق أن تحدثنا عنها في مقال سابق بعنوان البرمجة كائنية التوجه , المرحلة المتقدمة من معمارية البرمجة , لكن في لارافل حتى ان كنت مبتدئ في البرمجة كائنية التوجه ل php ستجد لنفسك مكان بين مبرمجي لارافل , لكن نضيف ملاحظة مهمة هنا , تعلمك لبرنامج HelloWorld في php لا يكفيك للبدء في تعلم لارافل , للأسف

بنية ملفات واضحة

بعد تخطيك الأيام الأولى في تعلم لارافل ستجد أن الملفات التي تتعامل معها لا تزيد عن 4 مجلدات يحتوي المجلد فيهم ما يقارب ال 10 ملفات (يعتمد العدد الصحيح طبعاً على نوعية موقعك) , وستجد ان التنقل بين المهام في لارافل سهل للغاية

القوة الهائلة

قد تعتقد أن مصطلح القنبلة الهيدروجينية كان مبالغاً فيه في البداية , لكن مع بعض الوقت ستجد أنني محق تماماً , انها قنبلة ساحقة لجميع المنافسين !

الأمان العالي

يمتلك اطار عمل لارافل حماية لا يستهان بها , فهو الوسيلة الأمثل لمبرمج PHP يعتبر نفسه ضعيف في الحماية , لارافل تتولى الأمر عنك !

اضافات كثيرة

يمكنك اضافة ميزات كثيرة الى لارافل عبر الاضافات الموجودة بشكل مجاني في الانترنت , الأمر الذي سيوسع مشروعك الى حدود لا يمكن لأحد تصورها

أخيراً , توثيق سهل واضح

ربما ليست ميزة تنافسية خاصة بلارافل , لكن التوثيق المقدم من موقع لارافل سهل الفهم , ربما لن تحتاج أصلاً الى أي دورات لانجاح مسيرتك المهنية في لارافل , يكفي أنك متوسط المستوى في اللغة الانجليزية وتمتلك الحماس و الجرأة للضغط على زر اطلاق القنبلة .

تنصيب لارافل على جهازك

لتنصيب لارافل على جهازك , كل ما عليك هو استخدام Composer الذي تحدثنا عنه في مقالة سابقة بعنوان : ما هو Composer , تعرف عليه وعلى طريقة استعماله, واستخدام الأمر التالي

composer global require laravel/installer

وسيتم تنصيب حزمة جديدة على جهازك لاستخدامها في تنصيب مشاريع لارافل

laravel new blog

هذا الأمر سيقوم بانشاء مجلد باسم Blog في المسار الحالي وانشاء مشروع لارافل فيه

أو يمكنك اختار عملية تنصيب حزمة لارافل على جهازك وانشاء مشروع لارافل مباشرة باستخدام Composer

composer create-project --prefer-dist laravel/laravel blog

والآن كل ما عليك فعله , باستخدام ال Command Line اياً كان ما تفضل استخدامه الذهاب الى المشروع عبر الأمر cd وعند وصولك اليه , كتابة الأمر التالي :

php artisan serve

وسيظهر لك رابط المشروع , قم بفتحه في متصفحك وسيظهر لك مشروعك الأول باستخدام لارافل , وغالباً ما يكون الرابط كالتالي

http://localhost:8000

http://127.0.0.1:8000

وقد يختلف الرابط بحسب نوع نظام التشغيل و ال Ports المتوفرة , لكن الرابط الذي سيظهر لك هو ما سيعمل في النهاية وسيظهر لك هذه الصفحة الرائعة

 

Laravel Installation Screenshot

الخطوة الأولى : ملف الاعدادت .env

ملف اساسي لاي مشروع لارافل , ستجده في جذر المشروع باسم .env وقد يكون مخفي في انظمة لينكس او ماك , عليك بالدخول اليه وتعديله واضافة معلومات الاتصال بقواعد البيانات ان وجدت و غيرها.

أنظمة لارفل , نظام التوجيهات Routing

نظام التوجيهات في لارافل بسيط وسهل بشكل لا تتخيله , سيحتاج منك تقريباً 20 ثانية لانشاء صفحة جديدة , وربما لن يزيد الأمر عن 3 دقائق لانشاء صفحة متكاملة (بدون التصميم)

جميع التوجيهات يمكنك ايجادها في المسار التالي : routes/web.php

الصيغة العامة للتوجيه في لارافل هي كالتالي :

Route::_METHOD('PAGE-LINK' , 'RESULT');

التوجيه المبسط , توجيه الى دالة function

بهذه الطريقة ستقوم باعادة التوجيه الى دالة تعيد محتوى معين , وستظهر العبارة او اياً كان نتيجة الدالة في الصفحة ففي مثالنا , عندما تفتح http://your-site.domain/page-link

سيظهر لك كلمة Hello World From Laravel , بهذه البساطة

Route::get('page-link' , function(){
   return "Hello World From Laravel";
});

كما يوجد أنواع أخرى للتوجيه , وسنقدم هنا أشهر الأنواع طبعاً والمدعومة من آخر اصدار Laravel 8

توجيه الى كونترولر

وأبسط كلمة يمكن قولها عن الكونترولور هو كلاس php يستمد العديد من خواصة من كلاس Controller الاساسي الموجود مع لارافل نفسه عند تنصيبها

Route::get('page-link' , '[email protected]');

تسمية ال Routes

يمكنك في لارافل اضافة اسم لكل Route, الأمر الذي سيساعدك كثيراً في ترتيب صفحاتك و تحديثها لاحقاً دون مشاكل, كمثال يمكنك اعطاء صفحة تسجيل الدخول اسم login , بهذه الطريقة لن تواجه مشكلة عن تحديث رابط الصفحة من login الى signin مثلاً, فاسم ال route يعتبر مشابه لفكرة استخدام المتغيرات الديناميكية , تحتاج فقط لتعريف البيانات مرة واحدة و استخدامها لاحقاً كما تشاء, الكود التالي سيشرح الأمر بصورة أوضح:

Route::get('login','[email protected]')->name('login.get');
<a href="{{route('login.get')}}">Login</a>

أنظمة لارفل , Controllers

الكونترولور أو المتحكم باللغة العربية ان صح التعبير , هو يعتبر جوهر المشروع وقلبه النابض , في هذه الملفات يمكنك انشاء العمليات الخاصة بالمشروع وارسالها الى الصفحات التي ستظهر للمستخدم , ولانشاء كونترولور في لارافل قم باستخدام الأمر التالي في ال Command Line :

php artisan make:controller ControllerName

اذاً , أين اجد ال كونترولور في المشروع ؟ ستجد الكونترولور دائماً موجود في المسار التالي : app/Http/Controllers

وعند انشاء كونترولر يوجد نصيحة للتسمية , طبعاً يمكنك تسمية الكونترولور بما تشاء لكن الأفضل هو استخدام نظام كتابة يعتمد على اسم الكونترولور في البداية ومن ثم كلمة Controller , كمثال : AdminController وليس controllerForAdminStuff , طبعاً كلا التسميتان صحيحة , لكن ان كان هناك قواعد متعارف عليها ما المانع من اتباعها ؟

والآن بعد أن قمت بانشاء الكونترولور لنقم بعملية حسابية بسيطة فيه ...

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ControllerName extends Controller
{
    public function MethodName(){
return 5+5; }
}

اذاً , بستخدم ال Controller للعمليات المنطقية في المشروع, و تختلف طرق استخدامه حسب نوع المشروع و المتطلبات الموجودة التي قد تختلف من جمع رقمين الى التواصل مع API موقع آخر أو التواصل مع قاعدة البيانات و غيره ...

أنظمة لارفل , Model

ال Model في MVC عموماً هو العنصر المتحكم في قواعد البيانات, فعن طريقه يمكننا التواصل مع قاعدة البيانات و اضافة و حذف و ترتيب البيانات و غيرها من العمليات المهمة, طريقة انشاء Model في لارافل بسيط للغاية, لكن قبل انشاء ال Model علينا التعرف على عنصر مساعد لل Model و هو ما يسمى ال Migration.

باختصار, ال Migration هي عبارة عن كود بسيط يساعد على بناء جدول قاعدة البيانات المرتبط بال Model فهو يوفر Blueprint للجدول تظهر فائدته الكبرى عن العمل ضمن فريق, يمكن ذكر التفاصيل الكاملة عن أنظمة ال Migrations في القسم التالي من المقال, و الآن نعود لمحور هذا القسم , ال Model

يتم تخزين ال Model في مجلد App/Models

انشاء Model جديد

لانشاء Model جديد كل ما عليك فعله هو كتابة السطر التالي في سطر الأوامر Command Line ضمن مجلد المشروع:

php artisan make:model ModelName -m -c

السطر السابق سيقوم ب 3 مهام , الأولى هي انشاء Model باسم ModelName, من المستحب تسمية ال Model بصيغة Pascal Case و ان يكون مفرداً فعليك أن تسمي ال Model User وليس Users

-m تعطي الأمر لانشاء Migration , يمكنك طبعاً ألا تكتب هذا الحرف و لن يتم انشاء Migration ,  لكن في الغالب عندما تبدأ بانشاء System في موقعك فستحتاج انشاء Migration مع ال Model, في حال قمت بكتابة هذا الأمر فسيتم انشاء Migration في مجلد database/migrations و سيتم ربط الجدول الخاص بها مع ال Model

-c تعطي الأمر لانشاء Controller, وكما هو الأمر في ال Migration يمكنك الا تكتب هذا الأمر و لن يتم انشاء ال Controller

استخدام ال Model

لنفرض انك قمت بانشاء Model باسم Article, غالباً سيكون هدفك حفظ المقالات في قاعدة البيانات لديك لعرضها على الزوار , من خلال ال Model يمكنك عرض جميع المقالات المخزنة في قاعدة البيانات, عرض مقال محدد حسب ال id أو ال slug, القيام بعملية بحث حسب keyword معينة و غيرها الكثير, تماماً كما كنت تفعل في Mysql لكن الفرق المميز هو عدم حاجتك لكتابة كود معقد الى حد ما , يمكنك اختصار الأمر بسطر واحد!

مشروع بسيط باستخدام لارافل Laravel

بعد أن تعرفنا على الأنظمة الأساسية في Laravel , لنقم بكتابة مشروع بسيط لتطبيق كل ما تعملناه في المقال, فكرة المشروع هي عبارة عن مدونة بسيطة, يمكنك من خلالها كتابة مقال و حفظه في قاعدة البيانات و استرجاع جميع المقالات أو مقال محدد حسب ال id, لنبدأ!

انشاء ال Routes المطلوبة

في ملف web.php , سنكتب السطور التالية:

Route::get('/' , '[email protected]')->name('home');
Route::get('/{id}' , '[email protected]')->name('single');
Route::get('/new' , '[email protected]')->name('new.get');
Route::post('/new' , '[email protected]')->name('new.post');

كما نلاحظ يوجد 4 Routes , الأول لعرض جميع المقالات , الثاني لعرض مقال محدد حسب ال id , الثالث لعرض Form ادخال بيانات المقال, و الرابع لحفظ المقال في قاعدة البيانات.

انشاء ال Model, Controller, Migration

في سطر الأوامر , سنكتب الأمر التالي:

php artisan make:model Blog -m -c

هذا الأمر سيقوم بانشاء Model باسم Blog, و Controller باسم BlogController و Migration باسم create_blogs_table_xxxx_xxxxx_xxxx

تجهيز حقول قاعدة البيانات

لنبدأ بالتوجه الى database/migrations , سنجد ضمن هذا المجلد ملف باسم create_blogs_table , ضمن هذا الملف و ضمن ال Method المسماة up() سنكتب الكود التالي:

    Schema::create('blogs', function (Blueprint $table) {
        $table->id();
        $table->string('title');
        $table->string('description');
        $table->timestamps();
    });

هذا الكود سيقوم بانشاء جدول باسم blogs في قاعدة البيانات و من ثم اضافة 5 حقول id,title,description,created_at,updated_at

ربط المشروع بقاعدة البيانات و انشاء الجداول

خطوة أخيرة قبل انشاء الجداول , علينا أن نعرف لارافل بمعلومات قاعدة البيانات الخاصة بنا , يمكننا عمل ذلك في ملف .env الموجود في جذر المشروع, عند فتح الملف توجه الى السطر المكتوب فيه التالي و قم باضافة بياناتك , تذكر أن لارافل لا تقوم بانشاء قاعدة بيانات لك بل تقوم بانشاء جداول فقط في قاعدة البيانات لذا عليك انشاء قاعدة البيانات بشكل يدوي و ربطها في لارافل

DB_CONNECTION=mysql
DB_HOST=sql_host
DB_PORT=3306
DB_DATABASE=database_name
DB_USERNAME=database_user
DB_PASSWORD=database_password

انت الآن جاهز! الخطوة التالية هي اعلام لارفل برغبتك بانشاء الجداول في قاعدة البيانات, يمكن اتمام هذا الأمر عبر الأمر:

php artisan migrate

سيقوم هذا الأمر بانشاء جدول blogs الذي قمنا بكتابة محتواه قبل قليل في قاعدة البيانات.

انشاء ال views

توجه الى مجلد resources/views و قم بانشاء 3 ملفات, الأول باسم new.blade.php و الثاني single.blade.php و الثالث index.blade.php

في ملف new.blade.php , سنقوم بانشاء Form بسيطة لرفع بيانات المقالات و الكود كالتالي:

<form action="{{route('new.post')}}">
    @csrf
    <input type="text" name="title" placeholder="Please enter the article title">
    <textarea name="description" placeholder="Please enter the article description"></textarea>
    <button type="submit">Submit</button>
</form>

ملف single.blade.php سيعرض بيانات كل مقال حسب ال id, الكود كالتالي:

<h1>{{$Article->title}}</h1>
<p>{{$Article->description}}</p>

ملف index.blade.php سيعرض بيانات كل المقالات و هنا سنقوم بانشاء foreach loop:

@forelse($Articles as $Article)
    <a href="{{route('single' , $Article->id)}}">{{$Article->title}}</a>
@empty
    <p>There is no articles</p>
@endforelse

الآن الى الخطوة الأخيرة, كتابة بعض الأكواد في ال controller لتشغيل المشروع

في ملف BlogController سنقوم بكتابة بعض الأكواد لتشغيل المشروع و ربط كل الصفحات ببعضها , و الكود كالتالي:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Blog;

class BlogController extends Controller
{
    public function index(){
        $Articles = Blog::latest()->get();
        return view('index' , compact('Articles'));
    }
    public function getSingle($id){
        $Article = Blog::find($id);
        return view('single' , compact('Article'));
    }
    public function getNew(){
        return view('new');
    }
    public function postNew(Request $r){
        $NewArticle = new Blog;
        $NewArticle->title = $r->title;
        $NewArticle->description = $r->description;
        $NewArticle->save();
        return back();
    }
}

تم بنجاح! لقد قمت بانشاء أول CRUD System باستخدام Laravel! لازال أمامنا الكثير لتعلمه عن لارافل , الرحلة طويلة و ممتعة!

في النهاية

على الرغم من طول المقال , فربما كل ما شرحناه هو أقل من 2% من اطار العمل , فنحن لم نتطرق لأي من خدمات لارافل القوية الأخرى كارسال الايميلات أو فلترة البيانات و البحث و غيرها! يوجد الكثير لتعلمه , وننصحك فعلاً بتعلم اطار عمل جبار كلارافل , لا توجد احتمالية خسارة , ولنعطيك المزيد من الأمل , من ضمن المشاريع التي يمكن تصميمها ب لارافل مشروع مدونة بسيط , حتى مشروع متجر الكتروني متكامل , لا تضيع الفرصة وأبدا الآن!