آموزش و کاربرد استفاده IOC container در Laravel – قسمت ۱

امروز بحث رو اندکی تخصصی تر میکنیم و میریم سمت container قدرتمند لاراول. یکی از مشخصه هایی که لاراول رو از سایر فریمورک های PHP جدا میکنه ، همین IOC هست. Dependency injection  یا DI یا تزریق نیازمندیها یک موضوع مهم در همه زبانهای شئ گراست. اینکه شما سایر کلاسها رو در کلاس خودتون استفاده کنید خیلی مهمه… 

اما IOC کانتینر چیست؟

برای اینکه از یک کلاس در کدمون استفاده کنیم باید از اون نمونه بگیریم. یه چیزی مثل کد زیر :

 

$myInstance = new MyClass();

$myInstance->method();

حتما بارها شده که مقدار Request $request  رو بعنوان ورودی به یک تابع در کنترلر میفرستید . سوالی که پیش میاد اینه که بدون نمونه گرفتن از کلاس Request چطور php اونو میشناسه؟ اینجاست که کاربرد IOC مشخص میشه. لاراول با کانتینرش شرایطی رو مهیا کرده که شما به راحتی با آبجکت ها کار کنید… لاراول وقتی کدی مثل FOO $foo  رو میبینه دنبال کلاس FOO میگرده که از اون نمونه بگیره. این خیلی خوبه. شما بدون اینکه از کلاس نمونه بگیرید نمونه گرفته میشه. بعضی وقتا پیش میاد که شما میخواید یک ریپازیتوری بنویسید که دیگران هم بتونن ازش استفاده کنن. اینجا نیاز هست که کلاس خودتون رو به لاراول برای نمونه گیری معرفی کنید و شما باید بصورت دستی کلاس رو به IOC بچسبونید یا به اصطلاح bind کنید.

نحوه ی bind یک کلاس به IOC در لاراول

App::bind('Hamid\Repositories\User\UserRepository', function($app)
{
    return new EloquentUserRepository( new User );
});

در کد بالا EloquentUserRepository رو چسبوندیم به کانتینر و از این به بعد لاراول کلاس EloquentUserRepository رو میشناسه همه جا.

برای اطلاعات بیشتر کتاب Laravel: From Apprentice To Artisan رو که نوشته تیلور آتول -سازنده لاراول – هست رو بخونید

5 دیدگاه دربارهٔ «آموزش و کاربرد استفاده IOC container در Laravel – قسمت ۱»

دیدگاه‌ خود را بنویسید

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