флейм из "помогите освоить МVС"

mustafa007

Новичок
Дружище, ты бы прежде чем аббревиатурами сыпаться, разобрался бы в основах ООП в PHP


Поставь там var_dump в своем ифе, напиши парочку new и запусти свой код. Поржем вместе.
Поржал :)
Признаю немного налажал, забыл указать static.

PHP:
interface IAdapter
{
}
class DBAdapter implements IAdapter
{
}
abstract class AbstractModel
{
   protected $adapter;
   public function __construct(IAdapter $adapter)
   {
      $this->adapter = $adapter;
   }
   public function getAdapter()
   {
      return $this->adapter;
   }
}
abstract class DBModel extends AbstractModel
{
   public function __construct()
   {
      static $adapter;
      if(!$adapter){
      $adapter = new DBAdapter();
      var_dump($adapter);
      }
   parent::__construct($adapter);
   }
}
class ModelA extends DBModel
{
}
class ModelB extends DBModel
{
}
new ModelA();
new ModelA();
new ModelB();
new ModelB();
// object(DBAdapter)#3 (0) { }
Однако остается вопрос к знатокам умных слов, -и чем плоха такая реализация? Я всегда имею возможность добавить или изменить адаптер изменив наследование отдельного класса не затрагивая сам код. Так же легко изменить адаптер у группы классов потомков изменим адаптер в абстрактном классе DBModel из этого примера. И всегда буду уверен, что код модели выполнится.
 

Redjik

Джедай-мастер
у тебя тут половина буковок из SOLID вообще мимо кассы... да какой там половина - все
в
с
е
 
  • Like
Реакции: AmdY

AmdY

Пью пиво
Команда форума
мне кажется он нас троллит, потому что нельзя быть ...
 

Redjik

Джедай-мастер
А в чем заключается пропагОнда? SOLID как раз о том, как сделать простой код. «Я против картошки, я белорус».
тоже кстати хотел отметить, что это не взаимоисключающие понятия.
вообще считаю, что объяснять ооп надо не с этих - инкапсуляция, полиморфизм, наследование - а именно с SOLID
 
Сверху