در حال بارگزاری ...
ابزار Service Container در لاراول

ابزار Service Container در لاراول

آخرین به روز رسانی یکشنبه 22 فروردین 1400

الهه قنبری طراح وب
اشتراک گذاری
1.1 (16 رای)

در این مقاله قصد داریم با یکی از قدرتمندترین ابزارهای لاراول به نام Service Container آشنا شویم.

Service Container ابزاری مهم و قدرتمند برای مدیریت وابستگی‌های کلاس‌ها و تزریق وابستگی در لاراول است. تزریق وابستگی یا dependency injection یک عبارت فانتزی است؛ این عبارت اساسا به این موضوع اشاره می‌کند که می‌توانید وابستگی‌های کلاس‌ها را به وسیله متد constructor یا در برخی موارد به وسیله متد setter به کلاس لود (بارگذاری) کنید.



متاسفانه فقط اعضای سایت قادر به مشاهده این دوره آموزشی هستند



دیدگاه ها 10

  • مجید زارعی
    مجید زارعی پنجشنبه 23 فروردین 1397

    سلام ....مطالب شما نسبت به بقیه خیلی خوب بود ...ولی نمیدونم چرا مطلب رو نمیتونم درست درک کنم...میشه کمکم کنید تا این مطلب برام خوب جا بیافته م [email protected] اینم ای تلگرامم هستش...اگه بتونید واسم کمک کنید ممنون میشم..خیلی گیر این مفهومم

    • سعید هوشیار
      سعید هوشیار پنجشنبه 23 فروردین 1397

      سلام مجید جان، قبل از این مبحث باید بدونی dependency injection چیه .که بتونی این مطلبو درک کنی ، به صورت کلی اگه بخوام dependency injection رو برات توضیح بدم، یعنی کدنویسی تمیز و فانتزی. یه مثال برا میزنم :
      اگر بخوای داخل کنترلر در لاراول از یه سروریس استفاده کنی چجوری اونو صدا میزنی ؟
      فرض می کنیم، نام سرویس MyClass است. به صورت عادی همه اینجوری صدا میزنن:

      
       protected $service;
      
        public function __construct()
        {
              $service=new MyClass();
        }
      
      

       ولی اگه دقت کردی باشی در لاراول خیلی از سرویس ها اینجوری صدا زده میشن :

      
        protected $service;
      
        public function __construct(MyClass $myClass)
        {
              $service=$myClass;
        }
      
      

       این کار به طور عادی در لاراول امکان پذیر نیست و باید سرویس مورد نظر خودتون رو به لاراول bind کنید،  برای این کار کافیه از service container ها استفاده کنید که در همین آموزش نحوه bind کردن سرویس ها رو کامل آموزش دادیم

  • مجید زارعی
    مجید زارعی پنجشنبه 23 فروردین 1397

    ممنون از توضیحات خوبتون..... یعنی به هیج وجه نمیتونیم از type hint استفاده کنیم....یا اینه در مورد service ها نمیتونیم این کار رو انجام بدیم....و باید container ها این کارو انجام بدن؟

    • سعید هوشیار
      سعید هوشیار پنجشنبه 23 فروردین 1397

      بله مجید جان، فقط کافیه بری داخل app/Providers/AppServiceProvider.php و سرویس خودتو bind کنی و بعدش به راحتی میتونی type-hint کنی. مثلا :

      
      $this->app->bind(MyClass::class, function ($app) {
          return new MyClass($app);
      }); 
      
      

  • مجید زارعی
    مجید زارعی پنجشنبه 23 فروردین 1397

    تشکر.....پس این جز قانون های لاراول هستش ......واجباری هستش.....لطف کردی اقا سعید...

    • سعید هوشیار
      سعید هوشیار پنجشنبه 23 فروردین 1397

      بله مجید جان همینطور هست،  خواهش میکنم

  • مجید زارعی
    مجید زارعی دوشنبه 27 فروردین 1397

    سلام....چرا درباره مبحث مهم در لاراول مطلبی نگفتین؟

    • سعید هوشیار
      سعید هوشیار دوشنبه 27 فروردین 1397

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

    • سعید هوشیار
      سعید هوشیار دوشنبه 27 فروردین 1397

      البته این دوره آموزشی هنوز تکمیل نشده

  • mohammad kavosi
    mohammad kavosi پنجشنبه 24 خرداد 1397

    سلام خسته نباشین. بنظرم ترجمه زیاد ساده و صریح نبود البته شاید خیلی سطح بالا بود. تشکر.



متاسفانه فقط اعضای سایت قادر به ثبت دیدگاه هستند

آموزش پایه لاراول