در زند فریم ورک ۲ برای استفاده از Service locator با چند نوع از سرویس ها روبرو خواهیم شد. در این مطلب به بررسی آنها خواهیم پرداخت.

قبل از شروع این مطلب بهتر است مطلب قبلی با عنوان زند فریم ورک ۲ – Service Locator/Manager را مطالعه نمایید.

برای تعریف یک سرویس جدید برای استفاده در زند فریم ورک ۲ می توانیم از تنظیماتی که در ادامه شرح داده خواهد شد استفاده نماییم. در این مطلب صرفا به بررسی انواع تنظیمات سرویس ها خواهیم پرداخت و در رابطه با محل قرارگیری کد ها و نحوه نوشتن آنها در آینده بحث خواهیم کرد.

  • Invokables

برای ایجاد یک سرویس(هر سرویس معمولا یک کلاس است) که پارامتر ورودی نداشته باشد از این نوع استفاده می شود که به صورت آرایه بایستی تعریف شود:

  •  abstract_factories

برای ایجاد سرویس هایی است که در Service Locator زند تعریف نشده اند و یا نا شناخته هستند. به طور مثال اگر سرویس Auth را در هیچ بخشی به زند معرفی نکرده باشید Service Manager به سراغ تک تک سرویس ها از نوع abstract factories خواهد رفت. اما برای ایجاد چنین سرویس هایی, کلاس مورد نظر بایستی از اینترفیس Zend\ServiceManager\AbstractFactoryInterface استفاده نماید. برای معرفی سرویس به صورت زیر میتوان عمل کرد :‌

  • factories

برای ایجاد سرویس هایی که به سازنده و پارامتر های آن نیاز دارید می توانید از این تنظیم استفاده نمایید. در کد زیر دو روش برای ایجاد این نوع از سرویس ها مشخص شده است. در روش دوم که به Factory اشاره میکند کلاس Factory مورد نظر بایستی از اینترفیس Zend\ServiceManager\FactoryInterface استفاده نماید :‌

  •  aliases

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

  • shared

تمام سرویس هایی که در زند فریم ورک 2 ایجاد می شوند به صورت پیش فرض مشترک هستند. به این معنی که اگر از سرویسی برای اولین بار استفاده نمایید سرویس مورد نظر ایجاد خواهد شد اما در صورتی که در ادامه همان سرویس را مجددا فراخوانی نمایید از سرویس ایجاد شده قبلی استفاده خواهد شد. بنابراین با اشتراک سرویس ها شما میتوانید مقداری را درون سرویس قرار دهید و در فراخوانی های بعدی از همان مقدار تنظیم شده استفاده نمایید. اما اگر این تنظیم را در حالت false قرار دهید این قابلیت غیر فعال می شود و با هر بار فراخوانی سرویس, کلاس سرویس مورد نظر از نو ایجاد می شود.

  •  services

با استفاده از این تنظیم یک سرویس را میتوان به طور مستقیم با توابع php ایجاد کرد :‌

  •  allow_override

با استفاده از این تنظیم میتوان سرویس را طوری تعیین کرد که امکان جایگزین شدن آن با سرویس دیگر در آینده وجود داشته باشد.

  •  initializers

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

در قطعه کد فوق مشخص می کنیم که اگر سرویسی مانند MyTableService از اینترفیس AdapterAwareInterface استفاده نماید متد setDbAdapter به صورت خودکار اجرا شده و پارامتری برای آن ارسال شود. در صورتی که سرویس دیگری تعریف نموده که از اینترفیس مشخص شده استفاده نماید پارامتر Adapter به صورت خودکار به متد مربوطه تزریق خواهد شد.

در مطالب بعدی به معرفی برخی سرویس هایی که در زند فریم ورک ۲ استفاده می شوند خواهیم پرداخت.

 

 

محمد باقر رستمی

برنامه نویسی رو دوست دارم و از کارم و بیشتر از اون از یادگرفتن لذت می برم. دوست دارم از این طریق برای مردم دنیا مفید باشم. فارغ از رنگ، نژاد، ملیت و جنسیت.

Latest posts by محمد باقر رستمی (see all)

facebooktwittergoogle_pluslinkedin

دیدگاه

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

*

*


هفت × 3 =