برنامه نویسی

جدا کردن با لاراول: واسط های اتصال به پیاده سازی ها با استفاده از ارائه دهندگان خدمات

آیا می دانید ارائه دهندگان خدمات چیست و چگونه آنها روی لاراول کار می کنند؟

در این مقاله ما تصویب کردن یک مثال دنیای واقعی ایجاد رابط و استفاده از ارائه دهنده خدمات برای اتصال آن به یک اجرای.

ارائه دهنده خدمات در لاراول چیست؟

مطابق اسناد لاراول:

ارائه دهندگان خدمات مکان اصلی کلیه راه اندازی های کاربردی Laravel هستند. برنامه شخصی شما و همچنین کلیه خدمات اصلی Laravel از طریق ارائه دهندگان خدمات راه اندازی می شود.

این بدان معناست که تمام خدمات اصلی در Laravel (مسیرهای میانه ، مسیرها ، پستانداران ، صف ها و غیره) از طریق ارائه دهندگان خدمات “بوت شده” هستند.

اگر می خواهید در مورد نحوه کار ارائه دهندگان خدمات اطلاعات بیشتری کسب کنید ، اسناد Laravel را بررسی کنید ، در این آموزش ما به استفاده از ارائه دهندگان خدمات و رابط ها برای اجرای تزریق وابستگی و الگوی آداپتور می پردازیم.

مثال در دنیای واقعی: رابط

بنابراین ، بیایید از شما بخواهیم یک کلاس مخزن کاربر ایجاد کنید ، اما مطمئن نیستید که آیا ORM پروژه خود را در آینده تغییر می دهید.

این سناریوی مناسب برای استفاده از الگوی آداپتور رابط + است ، درست است؟ به این ترتیب شما فقط ایجاد می کنید UserRepository رابط و شما می توانید چندین پیاده سازی مانند EloquentUserRepositoryبا DoctrineUserRepositoryبا PDOUserRepository، و غیره

بنابراین رابط ما به این صورت خواهد بود:

interface UserRepository
{
    public function add(SeriesFormRequest $request): Users;
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اما وقتی رابط را روی کنترلر یا لایه سرویس تزریق می کنید چگونه می توانید اجرای مورد نظر خود را به رابط متصل کنید؟

تزریق رابط در لایه کنترل کننده/سرویس:

بنابراین ، اکنون ما یک کنترلر کاربر داریم که کاربر را از طریق تزریق وابستگی دریافت می کند ، به نظر می رسد:

class UserController extends Controller
{
    public function __construct(private UserRepository $repository)
    {
        // Dependency injection
    }

   public function store(UsersFormRequest $request)
    {
        $serie = $this->repository->add($request);
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

چگونه برنامه ما می داند که ما خاص می خواهیم EloquentUserRepository در عوض DoctrineUserRepository به عنوان مثال؟ اینگونه است که ارائه دهنده خدمات جادوی خود را کار می کند.

اتصال رابط به اجرای انتخاب شده

اول ، ما ارائه دهنده خدمات خود را با استفاده از دستور artisan ایجاد خواهیم کرد: php artisan make:provider UserRepositoryProviderبشر اکنون ما یک ارائه دهنده جدید داریم app\Providers\UserRepositoryProvider.phpبشر

class UserRepositoryProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->bind(\App\Repositories\UserRepository::class, \App\Repositories\EloquentUserRepository::class);
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در register() روش برای اتصال رابط کاربری ما به اجرای انتخاب شده (floquentUserRepository) مسئولیت پذیر خواهد بود ، بنابراین در آینده ، اگر می خواهیم این اجرای را به عنوان مثال به دکترین تغییر دهیم ، فقط باید در ارائه دهنده خدمات خود تغییر کنیم!

پیکربندی برنامه

در آخر ، ما باید این ارائه دهنده را به لاراول خود اضافه کنیم app.php فایل را پیکربندی کنید ، بنابراین می داند چه کاری انجام دهید. در app\config\app.php در آرایه ارائه دهندگان این خط را اضافه خواهید کرد:

App\Providers\UserRepositoryProvider::class,
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

و همین است! اکنون شما یک رابط کاربری با استفاده از ارائه دهندگان خدمات به اجرای واقعی دارید. این یکی از موارد استفاده از این ویژگی عالی لاراول است ، اما می توانید اطلاعات بیشتری را در مورد اسناد Laravel برای کشف امکانات بیشتر بررسی کنید.

با تشکر از خواندن!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا