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

با سلام استاد در این مثالی که فرمودن اگر از وراثت استفاده کنیم برای کلاس‌های ارسال sms و email و این کلاس‌ها هر کدوم کلاس notification رو extend کنن اصل open-close نقض نمیشه؟

سلام دوست عزیز وقت بخیر

لطفا کدهاتون رو قرار بدید تا از روی کد بررسی کنیم و خدمتتون توضیح بدیم.

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

https://7learn.com/app/topics/5362

موفق باشید

کیان سلگی ۱۲ فروردین ۱۴۰۱، ۱۲:۴۱

abstract class notification{
    protected $params;
    public abstract function send();
}
class sendsms extends notification{
    public function send()
    {
        //send sms
    }
}
class sendemail extends notification{
    public function send()
    {
        //send email
    }
}
ali tehrani ۱۲ فروردین ۱۴۰۱، ۱۲:۴۸

ببخشید کد‌ها کامل نیست فقط به صورت کلی خواستم بپرسم میشه به این صورت هم انجام داد؟

ali tehrani ۱۲ فروردین ۱۴۰۱، ۱۲:۴۹

سلام بله این مثال میتونه درست باشه

چون داخل این اصل گفته شده که کلاس‌ها برای تغییر باید بسته باشند و تغییر نکنند ولی قابلیت توسعه داشته باشند. در مثال شما داخل کلاس نوتیفیکشین هیچ تغییری ایجاد نشده و شما اومدید ارسال نوتیفیکیشن به روش مختلف رو با کلاس‌های جدا انجام داد و کلاس notification رو توسعه دادید و طبق توضیحات این اصل عملکرد شما درست هست.

بهترین پاسخ
کیان سلگی ۱۲ فروردین ۱۴۰۱، ۱۳:۴۳