🔥 با کمک هوش مصنوعی در کمتر از 6 ماه فول‌استک شوید ...
۰ ثانیه
۰ دقیقه
۰ ساعت
۵ دانشجوی سون‌لرن
نقض قانون 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 را نقض کرده

میثاق خوئینی ۰۷ شهریور ۱۴۰۱، ۱۶:۳۵