Service providers changes

Service providers changes

2024-12-22 وقت القراءه : 1 دقائق

لطالما لعبت "Service Providers" دورًا هامًا في إطار عمل Laravel، حيث تُستخدم لتسجيل الخدمات والربطات والوظائف الإضافية مع النظام. في Laravel 11، شهدت "Service Providers" تغييرات جذرية أدت إلى تبسيطها بشكل كبير وجعلها أكثر سهولة في الاستخدام. سيتناول هذا المقال هذه التغييرات بالتفصيل، موضحًا فوائدها وكيفية استخدامها في Laravel 11.


كيفية عمل Service Providers في Laravel 10:

في Laravel 10، تُنشأ "Service Providers" ككلاسات داخل المجلد app/Providers. تحتوي هذه الكلاسات على طريقتين أساسيتين: register و boot. تُستخدم طريقة register لتسجيل الخدمات والربطات مع حاوية الخدمات (Service Container). أما طريقة boot فتُستخدم لتشغيل أي وظائف إضافية بعد اكتمال تحميل إطار العمل.


التغييرات في Service Providers في Laravel 11:

في Laravel 11، تم تبسيط "Service Providers" بشكل كبير من خلال:

  • تقليل عدد Service Providers الافتراضية: تم تقليل عدد Service Providers الافتراضية من أربعة إلى واحد فقط، وهو AppServiceProvider.
  • دمج وظائف Service Providers الأخرى: تم دمج وظائف Service Providers الأخرى إما في إطار العمل نفسه أو في ملف bootstrap/app.php.
  • نقل تسجيل Service Providers: تم نقل تسجيل Service Providers من ملف config/app إلى ملف bootstrap/providers.php.


إنشاء Service Provider جديد:

لإنشاء Service Provider جديد في Laravel 11، استخدم الأمر التالي:

php artisan make:provider TestServiceProvider
INFO  Provider [app/Providers/TestServiceProvider.php] created successfully. 

سيقوم هذا الأمر بإنشاء ملف TestServiceProvider.php داخل المجلد app/Providers.


تسجيل Service Provider:

يتم تسجيل Service Providers بشكل تلقائي في ملف bootstrap/providers.php.

<?php

return [
    App\Providers\AppServiceProvider::class,
];

كما نلاحظ أنه عند إنشاء provider جديد في Laravel 11 او إضافة provider في Laravel 11 فإنه يجب عمل register بداخل المملف providers.php الموجود بداخل المجلد bootstrap، بينما في Laravel 10 كنا نقوم بتسجيل الـ provider بداخل config/app، ولو ألقينا نظره على الملف config/app.php نلاحظ عدم وجود المصفوفة providers، حيث تم نقل تسجيل الـ providers إلى bootstrap/providers.php

مع الإنتباه أنه أي provider يتم إنشاؤه من خلال command يتم تسجيله بشكل مباشر.


الأن يتم إنشاء TestServiceProvider.php بداخل المجلد app/providers، وكذلك يتم تسجيله بشكل تلقائي في bootstrap/providers.php

<?php

namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class TestServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     */
    public function register(): void
    {
        //
    }

    /**
     * Bootstrap services.
     */
    public function boot(): void
    {
        //
    }
}

وكذلك تسجيله في bootstrap/providers.php

return [
    App\Providers\AppServiceProvider::class,
    App\Providers\TestServiceProvider::class,
];

أما إذا تم إنشاء provider بشكل يدوي، فإنه يجب علينا الذهاب إلى الملف bootstrap/providers.php


إضافة تعليق
Loading...