ایجاد facades سفارشی در لاراول

ترجمه و تالیف : رضا جمال زاده
تاریخ انتشار : 27 مهر 98
خواندن در 1 دقیقه
دسته بندی ها : لاراول

 اگر با لاراول کار کرده باشید بارها اسم فساد به گوشتان خورده است، اما فسادها واقعاً چه چیزی هست؟ چگونه می‌توان یک فساد سفارشی ساخت؟ 

فساد یک ظاهر استاتیک را برای کلاس‌هایی که در کانتینر وجود دارند ایجاد می‌کند.

در مقالات قبل به توضیح مفصل کانتینر پرداخته شد، اما به طور خلاصه service container یکی از بخش‌های مهم و اساسی لاراول می‌باشد. بوسیله آن می‌توانید وابستگی‌های کلاس‌ها(dependencies)  را مدیریت کنید.

بیایید به بررسی فسادهای سفارشی بپردازیم. شما می‌توانید به سادگی با استفاده از متد getFacadeAccessor برای یک کلاس فساد، یک فساد را تعریف کنید.

 در این مقاله ما به بررسی چگونگی ساخت فساد سفارشی در لاراول با استفاده از مراحل کوتاه زیر می‌پردازیم:

خلاصه مراحل : 

1-ایجاد یک فایل کلاس php

2-وصل کردن کلاس به service provider

3-ریجستر کردن service provider در فایل Config\app.php

4-ایجاد یک کلاس که از  Illuminate\Support\Facades\Facade ایکستند (extend) می‌شود

5-ریجستر کردن فساد سفارشی خود در فایل Config\app.php به عنوان یک نمونه(aliases)

بنابراین با ما همراه باشید تا یک فساد فوق‌العاده در لاراول با هم بسازیم.

مرحله ۱

کلاس کمکی roocket.php را در  App\roocketایجاد کنید، شما می‌توانید به جای roocket نام پوشه‌ی مورد نظر خود را انتخاب کنید.

namespace App\ roocket;

class roocket
{
    public function sayHello()
    {
        echo "Hello, from Facade class.";
    }
}

مرحله ۲

 این کلاس را به یک service provider وصل کنید. در این مورد من می‌خواهم یک service provider جدید ایجاد کنم. برای این کار کد زیر را در ترمینال خود وارد می‌کنیم:

php artisan make:provider roocketServiceProvider

پس از آن، از کد زیر در متد register ، service provider خود برای وصل کردن آن به کلاس خود استفاده می‌کنیم:

$this->app->bind(roocket,function(){
        return new roocket ();
});

بنابراین کلاس service provider شما چیزی شبیه زیر خواهد بود:

namespace App\Providers;

use App\ roocket;

use Illuminate\Support\Facades\App;
use Illuminate\Support\ServiceProvider;

class roocketServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->bind(roocket,function(){

        return new roocket();

        });
    }
}

مرحله ۳

ریجستر کردن service provider خود در فایل config\app.php به عنوان یک provider جدید:

        /*
         *   Application Service Providers...
         */
        App\Providers\ roocketServiceProvider::class,

مرحله ۴ 

یک فایل roocket.php در پوشه App\roocket ایجاد کنید که این فایل از Illuminate\Support\Facades\Facade توسعه می یابد(extend می‌شود). برای مثال کلاسی که من نوشته‌ام مانند زیر است:

class roocketFacade extends Facade
{
    protected static function getFacadeAccessor()
    {
        return 'roocket';
    }
}

مرحله ۵ 

ریجستر‌کردن کلاس ساخته شده در مرحله قبل به عنوان نمونه(aliases) در فایل config\app.php.

'roocket'   =>  App\Larashout\roocketFacade::class

آزمایش کردن

 در ادامه به آزمایش فساد خود می‌پردازیم. برای این کار یک روت ساده با استفاده از یک تابع کلاس فساد ایجاد می‌کنیم و سپس آن را اجرا می‌کنیم:

Route::get('/roocket', function() {
    roocket::sayHello();
});

 پس از آن آدرس روت بالا را در مرورگر خود باز کنید، در صورتی که مراحل قبل را به درستی اجرا کرده باشید باید پیام Hello نمایش داده شود.

در این مقاله به توضیح ساخت یک فساد سفارشی پرداختیم، امیدوارم این مقاله برای شما مفید واقع شده باشد.

منبع

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر لازم است ابتدا وارد سایت شوید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید