Laravel Under The Hood – چگونه چارچوب را گسترش دهیم

چند روز پیش داشتم تست پوسته پوسته شدن را درست می کردم و معلوم شد که به مقداری نیاز دارم منحصر بفرد و معتبر ارزش ها در کارخانه من لاراول FakerPHP را که ما معمولاً از طریق آن به آن دسترسی داریم، می پیچد fake() یاور. FakerPHP با اصلاح کننده هایی مانند valid() و unique()، اما می توانید هر بار فقط از یکی استفاده کنید، بنابراین نمی توانید این کار را انجام دهید fake()-unique()-valid()، که دقیقاً همان چیزی است که من نیاز داشتم.

\ این باعث شد فکر کنم اگر بخواهیم اصلاح کننده خودمان را بسازیم چه؟ مثلا، uniqueAndValid() یا هر اصلاح کننده دیگری ما چطور می تونیم توسعه دادن، گسترش چارچوب؟

فکر کردن با صدای بلند

من رشته افکارم را رها خواهم کرد.

\ قبل از ورود به هر راه حل بیش از حد مهندسی شده، همیشه می خواهم بررسی کنم که آیا گزینه ساده تری وجود دارد یا خیر و متوجه می شوم که با چه چیزی سر و کار دارم. بنابراین، اجازه دهید نگاهی به fake() یاور:

function fake($locale = null)
{
    if (app()-bound('config')) {
        $locale ??= app('config')-get('app.faker_locale');
    }

    $locale ??= 'en_US';

    $abstract = \Faker\Generator::class.':'.$locale;

    if (! app()-bound($abstract)) {
        app()-singleton($abstract, fn () = \Faker\Factory::create($locale));
    }

    return app()-make($abstract);
}

با خواندن کد، می بینیم که لاراول یک تکه را به ظرف متصل می کند. با این حال، اگر چکیده را بررسی کنیم، یک کلاس معمولی است که هیچ …

Source link