روز برنامه‌نویس مبارک 🤩🎉 از هدایای روز برنامه‌نویس جا نمونی ⌛
۰ ثانیه
۰ دقیقه
۰ ساعت
۵ دانشجوی سون‌لرن
نقض قانون DIP
جامعه پی اچ پی ایجاد شده در ۱۹ اسفند ۱۴۰۰

سلام امیدوارم حالتون خوب باشه.

ما داخل کلاس CouponValidator درون متد Validate اومید و به طور مستقیم از کلاس‌های CouponExist , CouponExpire , CouponActive اینستنس گرفتیم.

الان ما قانون DIP رو نقض کردیم.

از طرفی اگر بخوایم Inject کنیم اینهارو تعداد آرگومان‌های کانستراکترومون بیش از تعداد نورمال میشه.

سوالم اینه که الان نخوایم هم از دیزاین پترن change of responsibility استفاده کنیم، قانون SRP رو نقض میکنیم.

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

سلام.

آبجکت هارو باید به setNextValidator اینجکت کنید.

محسن موحد ۱۹ اسفند ۱۴۰۰، ۱۱:۳۰

275f-asking_question.PNGسئله اون نیست، سوالم رو مجددا مطالعه کنید و دقیقه 11:50 ویدیو رو هم ببنید.

داخل کلاس coupon Validator خط 17و 18 و 19 ما اومدیم داخل متد validate از اون کلاس هایی که توی سوال پرسیدم اینستنس گرفتیم، و این داره قانون DIP رو نقض میکنه.

مسعود هارونی ۱۹ اسفند ۱۴۰۰، ۱۱:۵۴

نباید new بگیرید. باید یک container بسازید مخصوص ساخت آبجکت ها.

سرچ کنید php dependency injection container مقالات و نمونه کدهای مورد نیازتون وجود داره.

محسن موحد ۱۹ اسفند ۱۴۰۰، ۱۲:۰۱

خیلی ممنون، مطالعه میکنم.

ولی این کد من نیست، از روی تصویر کد‌های این جلسه اسکیرین شات گرفتم.

مسعود هارونی ۱۹ اسفند ۱۴۰۰، ۱۲:۲۷

این مورد سوال من هم بود آیا این شکل که استاد کد زدن قانون DIP را نقض کرده

Mehran Darkaleh ۰۷ شهریور ۱۴۰۱، ۱۶:۳۵