ازاي تفصل كل Module في لارافيل في Folder لوحده

نفترض مثلاً مثلاً ..
إنك عايز تضيف في أي نظام عندك نظام Laravel عندك حاجة زي Posts ..
المفروض إنك بتروح تعمل الآتي ..
?تنشئ table عن طريق ال Migration 
?تنشئ Model علشان تتعامل مع ال table من خلاله .
?وتنشئ Controller علشان تحط فيه ال functions بتاعة الاضافة والحذف وهكذا ..
?تضيف Route بردو للاضافة والحذف وهكذا أو resource ليهم 
?تنشئ validator بحيث يفلتر الحاجات الاتصالات اللي داخله عندك .
?ولو النظام عندك كبير شوية وفيه صلاحيات بتحتاج تضيف الصلاحية .. وممكن ضيف policies لو بتستخدمها ..
?ولو عندك حاجة شروط معينة محتاج تعمل Middleware .
?ولو عندك شوية اعدادات لل posts ممكن تعملها ملف config
?وتقدر تعمل ليهم "غرفة تفتيش" عن طريق ال ServiceProvider
?وطبعاً طبعاً متنساش ال views بتاعتها ..
?ولو عندك موقع متعدد اللغات محتاج تنشئ ال lang files 
?ومحتاج تنشئ ال Tests بتاعتها طبعاً ..
?ويا سلام لو بتستخدم package معينة مربوطة بال Posts ..
?ولو عندك كمان Consoles أو أوامر محتاج تحطها فيها ..
-----------
طيب نفترض مثلاً بقى إنك عايز تعمل disable لنظام ال Posts دا بكل حاجة فيه ؟
طيب لو عايز تعيد تفعيل الجزء دا تاني ..
طيب لو عايز تعمل migrate و migrate:rollback الجزء دا بس بعيداً عن النظام ؟
طيب لو عايز تعدل في ال database بس مش عايز مجلد ال migrations الرئيسي يتملي ..
خد دي بقى يا عزيزي ..
لو عايز هوب دبل كيك تاخد كل الكلام دا في ثانية وتنقله زي م هو لمشروع تاني خالص .. يا ترا هتعمل أيه ؟؟!
وازاي تلم كل قسم زي ال posts مثلاً في Folder واحد بسلطاته ببابا غنوجه ؟
في الحقيقة الكلام دا في لارافيل لو حبيت تعملله Disable بحيث كإنه مش موجود في النظام عندك ف انت اللي هتعمله إنك هتدخل تمسح الكلام دا يدوياً واحدة واحدة ..
ولو عايز تعيد تفعيله محتاج إنك تقعد تكتب نفس الكلام دا من أول وجديد ..
-----------
في الحقيقة الموضوع دا بيتعمل بسهولة جداً جداً 
ومن غير لف كتير عن طريق Laravel Modules 
ودي Package بداية ظهورها كان بعد م تم اطلاق لارافيل بحوالي 5 سنين .. يعني ظهرت في 2016 ..
بتمكنك إنك تعمل كل دا في ثانية إلا ثانية ..
بتخليك تتعامل مع الموضوع زي ال plugins بتاعة wordpress بالظبط ..
ممكن تفعلها وممكن تلغي تفعيلها ..
وفي ثانية الملفات دي بتندمج مع Laravel وهيا لسة في مكانها في Folder منفصل تماماً .. وتقدر تستخدمها ك Package تماماً زي م بتثبت أي Package تانية
أشجعك جداً تستخدم ال package دي وتساعد في تطويرها ..
رابط ال Package
https://nwidart.com/laravel-modules/

تقدر تعمل Install ليها عن طريق

composer require nwidart/laravel-modules
php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"

ومتنساش طبعاً تضيف ال folder في ال composer.json بتاع المشروع بالشكل دا 

{
  "autoload": {
    "psr-4": {
      "App\\": "app/",
      "Modules\\": "Modules/"
    }
  }
}

وبعدين تعمل 

composer dump-autoload

علشان تحدث ملفات ال autoload اللي موجودة جوه ال vendor عندك

#Create Module
php artisan module:make <module-name>
#Create Multi Modules
php artisan module:make Blog User Auth

وتقدر تشوف كل الأوامر بتاعتها وتفاصيلها من هنا 

متنساش تشوف البوست دا ازاي تنشئ كل ملفات ال Model الأساسية بسطر واحد
https://peterayoub.me/article/laravel-model-all


مهندس حاسبات وذكاء اصطناعي، مؤسس منصة نفذلي.


1 التعليقات

  1. Mostafa Khattab

    How to create Laravel project to deal with SIP phones "SIP server" to work as PBX ? Thanks for your help


شاركنا رأيك

بريدك الالكتروني لن يتم نشره.