🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ پویا پارسایی
Event Subscribers به چه دردی میخوره؟
جامعه لاراول ایجاد شده در ۲۵ اردیبهشت ۱۴۰۱

سلام و عرض ادب

توی داکیومنت لاراول بخش events یه قسمتی داره به نام Event Subscribers. لینکش اینجاست.

میایم دستی یه کلاس Subscriber میسازیم، بعد تو متد subscribeش میایم تعریف میکنیم فلان event که فایر شد، بیا داخل همین کلاس فلان متد رو صدا بزن. آبجکت event رو هم میده به متده.

حالا میخوام بدونم این subscriber به چه دردی میخوره اصلا؟

اول اینکه فکر کنم اصل Single Responsibility رو نقض میکنه، چون این کلاس عملا داره چند تا کار رو انجام میده.

دوما وقتی که ما میتونیم یه event بسازیم و هر چند تا Listener خواستیم رو بهش وصل کنیم، این subscriber کار خاصی برامون انجام نمیده.

سلام دوست عزیز

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

موفق باشید ?

محمد گازری ۰۱ خرداد ۱۴۰۱، ۱۵:۴۷

سلام ...

ببینید یه حالتی وجود داره که شما باید بین اینکه Single Responsibility رو رعایت کنید و یا اینکه کلاس کمتری بسازید یک گزینه رو انتخاب کنید. لزوما همیشه استفاده از SRP کد شما رو تمیز نمیکنه .. چون مجبورید کلاس‌های زیادی بسازید .. به خاطر همین موضوع یک جاهایی بهتره که اصلا یک کلاس چند کار انجام بده ... و مثل هر موضوع دیگه‌ای داخل برنامه‌نویسی این خیلی بستگی داره به شرایط کد نویسی و پروژه شما ... اگر هم بخواید از بالاتر به این موضوع نگاه کنیم میتونیم این شکلی توضیح بدیم که این کلاس کلا داره Event‌های مربوط به کلاس User رو هندل میکنه ... یا مثلا داره مربوط به Authentication رو هندل میکنه ...

در صورتی که این کلاس هم تمیز بودن خودش رو داره و حتی توسعه پذیر بودن خودش رو هم داره ... چون شما دیگه میدونید که اگر بخواید مسائل مربوط به Authentication رو هندل کنید باید برید سراغ این کلاس ... در واقع ما با SRP هم میخوایم به این موضوع برسیم که هم کد تمیز داشته باشیم و هم توسعه پذیر بودن رو که ما الان در این مثالی که خود لاراول زده میتونیم این موضوع رو داشته باشیم ...

در مجموع نکته‌ای که وجود داره شما هیچ وقت نمیتونید بگید که این راهی که من دارم استفاده میکنم قطعا بهترین راه هستش و همیشه باید از این راه استفاده کرد .. شما باید نسبت به برنامه و پروژه‌ای که دارید توسعه میدید بهترین راه مختص اون برنامه رو انتخاب کنید و این موضوع هستش که اگر شما بتونید به درستی پیش ببرید برنامه‌نویس خوبی خواهید بود. چون قطعا شما تا پایان دوران کاری خودتون فقط با لاراول کار نخواهید کرد، قطعا سال دیگه با یک فریمورک دیگه و حتی یک زبان دیگه کار خواهید کرد که در اون امکان داره Event Subscriber وجود نداشته باشه ولی قطعا در اونجا هم کدنویسی تمیز و توسعه‌پذیر بودن وجود داره ، به خاطر همین سعی کنید که مفاهیم رو بهتر و عمیق‌تر یاد بگیرید ...

و موضوع پایانی هم اینکه در همه فریمورک‌ها و زبان‌ها کلی Tools وجود داره که اصلا به کار نمیاد و حتی بهتر هستش که از اون‌ها استفاده نشه و زمانیکه شما مفهوم رو بلد باشید به راحتی میتونید تشخیص بدید که از چه Tools کجا و به چه صورت استفاده کنید بهتره ...


بهترین پاسخ
مهرداد سامی ۱۳ خرداد ۱۴۰۱، ۱۲:۵۱