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

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

شارك هذا المقال:



مقدمة

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

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

ببساطة , لارافل Laravel هو اطار عمل خاص ب لغة php سيجعلك تقع حرفياً في حب هذه اللغة حتى وان كنت مصمم في الاساس , يقدم لارافل بيئة عمل متكاملة لكل ما تحتاجه او قد تحتاجه في اي فترة مستقبلية من حياتك المهنية , لارافل Laravel مبني على طريقة MVC الشهيرة التي تفصل ال Model عن View عن Controller , مما يوفر لك بيئة عمل سلسة وسهلة , وربما لحد الآن لم تستطع استيعاب ماهية لارافل Laravel تماماً , لا داع للقلق فالسطور القادمة كفيلة بمساعدتك للدخول الى بداية مشوارك في تعلم لارفل Laravel. سنقدم في هذه المقالة المطولة تفاصيل كثيرة عن اطار العمل الكبير هذا , لذلك , نأمل عند انتهائك من قراءة هذه المقال ستجد نفسك على دراية واسعة بلارافل وستجد الطريق بدأ أمامك للبحث عن دورات تعليمية.
تقدم لارافل مجموعة غنية من الوظائف التي تتضمن الميزات الأساسية لأطر PHP مثلCodeIgniter  و Yii ولغات البرمجة الأخرى مثلRuby on Rail، وتحتوي لارافل على مجموعة غنية جدًا من الميزات التي تزيد من سرعة تطوير الويب.
إذا كنت معتادًا على الكتابة بلغة PHP، فإن لارافل ستجعل مهمتك أسهل بكثير، فهي توفر الكثير من الوقت إذا كنت تخطط لتطوير موقع ويب من البداية. علاوة على ذلك، فإن موقع الويب المبني بلارافل آمن ويمنع العديد من هجمات الويب.
كما أنه تمتاز لارافل بسرعتها الشديدة وسهولتها، ولكنها عكس جانغو مثلا تستخدم أكثر في تطوير المشاريع الصغيرة لأنها لا تدعم التوسع الشديد (Scalability)، فإذا كنت تنوي تطوير مشروع صغير فلارافل حل رائع، بل أفضل من جانغو بكثير لأن فلسفة جانغو مبنية على تطوير المواقع العملاقة.

مقال مرتبط: ما هو Django جانغو؟ تعرف على أهم اطار عمل للغة Python

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

لنطرح الأمر على شكل نقاط , ومن ثم نناقشها واحدة تلو الأخرى سنبدأ بأهم ميزة , لم سمينا لارافل أنه أفضل اطار عمل php ؟ واسع الانتشار اطار عمل لارافل Laravel هو أكثر اطر عمل php انتشاراً , وبعملية حسابية بسيطة نستنتج أن الانتشار الهائل = مصادر هائلة للتعلم , وهنا يكمن بيت القصيد في تفضيل لارافل عن غيرها من المنافسين . السهولة كمعظم أطر العمل التي تعتمد بنية MVC , ستجد أن المصطلح بطبيعته متقدم قليلاً فهو تقريبا المرحلة المتقدمة من OOP (البرمجة كائنية التوجه) التي سبق أن تحدثنا عنها في مقال سابق بعنوان البرمجة كائنية التوجه , المرحلة المتقدمة من معمارية البرمجة , لكن في لارافل حتى ان كنت مبتدئ في البرمجة كائنية التوجه ل php ستجد لنفسك مكان بين مبرمجي لارافل , لكن نضيف ملاحظة مهمة هنا , تعلمك لبرنامج HelloWorld في php لا يكفيك للبدء في تعلم لارافل , للأسف بنية ملفات واضحة بعد تخطيك الأيام الأولى في تعلم لارافل ستجد أن الملفات التي تتعامل معها لا تزيد عن 4 مجلدات يحتوي المجلد فيهم ما يقارب ال 10 ملفات (يعتمد العدد الصحيح طبعاً على نوعية موقعك) , وستجد ان التنقل بين المهام في لارافل سهل للغاية القوة الهائلة قد تعتقد أن مصطلح القنبلة الهيدروجينية كان مبالغاً فيه في البداية , لكن مع بعض الوقت ستجد أنني محق تماماً , انها قنبلة ساحقة لجميع المنافسين ! الأمان العالي يمتلك اطار عمل لارافل حماية لا يستهان بها , فهو الوسيلة الأمثل لمبرمج PHP يعتبر نفسه ضعيف في الحماية , لارافل تتولى الأمر عنك ! اضافات كثيرة يمكنك اضافة ميزات كثيرة الى لارافل عبر الاضافات الموجودة بشكل مجاني في الانترنت , الأمر الذي سيوسع مشروعك الى حدود لا يمكن لأحد تصورها أخيراً , توثيق سهل واضح ربما ليست ميزة تنافسية خاصة بلارافل , لكن التوثيق المقدم من موقع لارافل سهل الفهم , ربما لن تحتاج أصلاً الى أي دورات لانجاح مسيرتك المهنية في لارافل , يكفي أنك متوسط المستوى في اللغة الانجليزية وتمتلك الحماس و الجرأة للضغط على زر اطلاق القنبلة.

إحصائيات استخدام لارافل في السوق

- تمتلك لارافل0.32٪  من حصة السوق بين جميع أطر الويب الموجودة اليوم.
- تمتلك لارافل 69.5  ألف نجمة على Github مع 20.3 ألف مشروع مباشر وأكثر من 597 مساهمًا متخصصًا يقومون بتحسين إطار العمل في الوقت الفعلي.
- وفقًا لاستطلاع Stack Overflow Developer ، يفضل 51.4٪ من المستجيبين استخدام لارافل لبناء تطبيقات الويب الخاصة بهم. في الوقت نفسه، تدعي JetBrains أن Laravel تم تصنيفها من بين أكثر ثلاثة أطر PHP شيوعًا حيث يستخدمها نصف مطوري PHP.


ما هي المشاريع التي يمكنك القيام بها عن طريق لارافل؟

تأتي الشركات التي تستخدم لارافل لتطبيقات الويب الخاصة بها من صناعات مختلفة مثل تكنولوجيا المعلومات، التمويل، السفر، الترفيه، البيع بالتجزئة، وغيرها. باستخدام هذا الإطار، يمكن بناء الاتي:
- صفحات الويب الثابتة والديناميكية
- تطبيقات الصفحة الواحدة (SPA) والتطبيقات متعددة الصفحات  (MPAs)
- مواقع التجارة الإلكترونية على شبكة الإنترنت
- تطبيقات على مستوى المؤسسة
- المنتديات وبوابات الوظائف والأخبار وغيرها
- أنظمة إدارة المحتوى (CMS)
- مواقع التواصل الاجتماعي
- تطبيقات الويب المستندة إلى SaaS – Software as a Service
- تطبيقات الويب لخدمات عرض الفيديوهات والبث
- تطبيقات الويب للتعليم الإلكتروني
- أنظمة إدارة الويب القائمة على تداول الأسهم
- تطبيقات الويب ذات المكافآت وميزات التعرف
- تطبيقات مراقبة أداء مواقع الويب ذاتية الاستضافة

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

لتنصيب لارافل على جهازك , كل ما عليك هو استخدام 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' , 'CotrollerName@MethodName');

تسمية ال Routes

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

 
Route::get('login','UserController@getLogin')->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; 
class Admin extends Controller{
    public function count(){
        $a = 1; $b = 2; $c = $a + $b; return $c; 
    }
}

 

تم بنجاح ! لقد قمت بانشاء الكونترولور , طبعاً الكونترولور وجد لعمل مهام أضخم من هذا بكثير , لكن المثال السابق بسيط وكافي للاختبار فقط , ولكي تستعرض النتيجة عليك انشاء Route جديد وتوجيهه الى ال Controller لعرض النتيجة , كيف ذلك ؟ بالكود التالي في ملف routes/web.php

 
Route::get('count' , 'CotrollerName@count'); //Change ControllerName to Your Controller Name to Avoid Errors...

والنتيجة في الصفحة ستكون ناتج الجمع , والذي هو 3 طبعاً ... وهذه هي الفكرة العامة , مع تقدمك ستجد أن الأمور أكبر بكثير من مجرد عمليات حسابية , وستحتاج صفحات تستقبل فيها البيانات وتعرضها , وهنا يأتي دور ال Views وهي العنصر الثاني في بنية MVC

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

ال views هي بأسهل كلمة يمكن قولها , صفحات html الخاصة بموقعك , ويمكن ايجاد جميع صفحاتك في المسار التالي : resources/views ولانشاء view جديدة لا حاجة لل Command Line هنا , فقط في مجلد views قم بانشاء ملف جديد وليكن اسمه index.blade.php وقد لاحظت ان نوع الملف ليس HTML , فعليا هو ملف PHP لكن وضع اللاحقة blade.php لاضافة امكانية استخدام محرك Blade في الصفحة , يمكنك الاستغناء عنه لكن لماذا قد تفعل ذلك ؟ في اي صفحة blade يمكنك كتابة كود html عادي والاستفادة من بعض الاضافات المقدمة من Blade , لذا لا ننصح بعدم استخدام هذا المحرك لأي سبب ... ولنفترض شيئ بسيط هنا , سنعيد كتابة نظام جمع عددين باستخدام ما تعلمناه حتى الآن , Routes , Controller , views أولاً , سنقوم باستخدام نفس ال Controller و ال Route السابقين , فقط سنقوم بانشاء ملف view جديد وارسال نتيجة الجمع اليه , لذا لنبدأ , وليكن اسم الملف index.balde.php , ويمكنك تسميته ما تشاء طبعاً , والان لنستعرض الكود الكامل لمشروعنا , مشروع جمع عددين (مضحك قليلاً) سنقوم بعمل تعديل بسيط على الكونترولور لارسال القيمة الى ملف وليس لعرضه بشكل مباشر , و التعديل بسيط وهو كالتالي :

 
<?php 
namespace App\Http\Controllers;
class Admin extends Controller{
    public function count(){
        $a = 1;
        $b = 2;
        $c = $a + $b;
        return view('index')->with('c' , $c);
    }
}

كل ما قمنا بعمله هو ارسال النتيجة لل view المسماة index , ولا داع لاضافة الاسم الكامل هنا , يكفي استخدام الاسم ما قبل .blade.php ومن ثم استخدمنا دالة with التي تساعد على ارسال متغيرات الى ال view . وفي ملف routes/web.php الكود سيبقى بدون اي تغيير كالتالي :

 
Route::get('count' , 'ControllerName@count'); //Change ControllerName to Your Controller Name to Avoid Errors...

أما ال view , سنقوم بكتابة كود html عادي , لكن باضافة بسيطة يعطينا اياها محرك Blade ملف resources/views/index.blade.php

 
<h1>{{ $c }}</h1>

اذاً , بستخدم ال 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('/' , 'BlogController@index')->name('home');
Route::get('/{id}' , 'BlogController@getSingle')->name('single');
Route::get('/new' , 'BlogController@getNew')->name('new.get');
Route::post('/new' , 'BlogController@postNew')->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" placeholder="Please enter the article title" /> 
    <textarea name="description" placeholder="Please enter the article description"></textarea> 
    <button type="submit">Submit</button>
</form>

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

ملف single.blade.php سيعرض بيانات كل مقال حسب ال id, الكود كالتالي: ملف 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% من اطار العمل , فنحن لم نتطرق لأي من خدمات لارافل القوية الأخرى كارسال الايميلات أو فلترة البيانات و البحث و غيرها! يوجد الكثير لتعلمه , وننصحك فعلاً بتعلم اطار عمل جبار كلارافل , لا توجد احتمالية خسارة , ولنعطيك المزيد من الأمل , من ضمن المشاريع التي يمكن تصميمها ب لارافل مشروع مدونة بسيط , حتى مشروع متجر الكتروني متكامل , لا تضيع الفرصة وأبدا الآن!



ما رأيك في هذا المقال؟

كيف تقييم نوعية المحتوى في نقرة؟

5 4 3 2 1