coarad supp
4 سال پیش توسط coarad supp مطرح شد
3 پاسخ

استفاده از تریت

سلام دوستان، یه سوالی ذهنمو مشغول کرده میخواستم بدونم به چه شکل هست

اگه ما یه تریتی (trait) درست کنیم مثلا برای اپلود و حذف فایل و دو تا تابع داخلش بنویسیم ،
اگه این تریت رو توی کنترلر اصلی (App\Http\Controllers) ایمپورت کنیم بهتره؟ یا توی همون کنترلری که نیاز به اپلود داره؟ ینی میخوام بدونم این کدها توی کنترلر اصلی باشه بارگذاری داره؟ (منظورم از بارگذاری اینه که چون توی کنترلر اصلی هست هربار نیاز به لود پیدا میکنه؟)


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

اضافه کردن functionality به کنترلر اصلی برای مواقعی هست که از اون کد زیاد استفاده کنیم..
مثلا Validation و یا Authorization جز مواردی هستند که تقریبا در تمام کنترلر ها ما بهشون نیاز داریم، پس منطقی هست که به شکل Trait موجود باشند..

حالا شما چند تا راه دارید:

  • متد های مربوطه رو به همون کنترلر اضافه کنی (ساده ترین روش)
  • یک تریت بسازی و در کنترلر (یا کنترلر اصلی) ازش استفاده کنی (روشی که اشاره کردید)
  • یک کلاس بسازی مثلا UploadHandler و به عنوان یک وابستکی به متد construct کنترلرت پاس بدی

یک روش بهتر هم وجود داره که خود فریم‌ورک لاراول و اکثر پکیج های خوب ازش استفاده میکنند:
کلاس UploadHandler رو بسازی و در یک Service Provider بیای و کلاس رو در Service Container با یک کلید bind کنی.. و در کنترلر مورد نظر resolve کنی و استفاده کنی.


coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 4 سال پیش مطرح شد
0

@ali.bayat
خیلی خیلی ممنون، توضیحات کاملی بود، لطف کردین
چون کدها در برخی از کنترلرها نیاز هست، به همون شکل تریت استفاده میکنم پس🙏🙏


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

خواهش میکنم
موفق باشید


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام