راکت
حل شده

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

3 پاسخ

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

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

coarad supp
coarad supp
@coaradsupp
ثبت پرسش جدید

پاسخ‌ها

3
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

بهترین پاسخ

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

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

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

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

coarad supp
coarad supp
@coaradsupp

تخصص: برنامه نویس لاراول

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

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

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

شاید پاسخ شما همین‌جا باشد

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

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