# ramzes (18.04.2016 / 21:35)
и вообще
Наследование, в некоторой степени, нарушает принципы инкапсуляции.
Код получается более связаным, что может привести к существенным сложностям при его дальнейшем развитии.
Я не говорю, что иметь "базовый класс" в пределах одной задачи - плохо.
Например, BaseController класс, содержащий общую для всех подобных объектов логику - это нормально.
Но вот для более сложных задач, это плохо.
и в частности
А зачем наследовать MySQLi? Нет, серьёзно?
Там же, да же, нельзя MySQLi Result свой сделать, насколько я помню.
# ramzes (18.04.2016 / 21:36)
тогда уж регистри
Регистри - это то же самое, что и:
public function __construct()
{
$this->a new A();
}
Всё то же "получение зависимостей", что не кошерно.
Самый простой и идеологически верный способ использования одного объекта, внутри другого - это просто передать один объект, внутрь другого
Как - это уже другой вопрос.
Можно через конструктор (costructor injection), можно через свойство (property injection), можно через метод-сеттер (method injection).
# L!MP (18.04.2016 / 21:45)
Наследование, в некоторой степени, нарушает принципы инкапсуляции.
Код получается более связаным, что может привести к существенным сложностям при его дальнейшем развитии.
Я не говорю, что иметь "
можно.
я наследую и мускули и мускули результ.
собственно для таких методов как count, asArray и т.д. т.е. методов результата мне пришлось сначала наследовать мускули, и из него перенаправлять на свой результ наследующий мускули_результ
# L!MP (18.04.2016 / 21:53)
Регистри - это то же самое, что и:
public function __construct()
{
$this->a new A();
}
Всё то же "получение зависимостей", что не кошерно.
Самый простой и идеологически верный способ
с чего это регистри то же что и new?
регистри хранит инициализированный обьект, а new даст новый. совершенно разные вещи же
___
сеттеры да, а вот в конструкторе аргументы мне вообще не нравятся в целом
# ramzes (18.04.2016 / 22:20)
с чего это регистри то же что и new?
регистри хранит инициализированный обьект, а new даст новый. совершенно разные вещи же
___
сеттеры да, а вот в конструкторе аргументы мне вообще не нравятся в ц
с чего это регистри то же что и new?
Я же написал там почему. Смысл не в том ЧТО этот код делает, а КАК делает.
Это принципиально одинаковый подход - получение зависимостей (dependency lookup), при котором зависимость жестко указана в коде.
L!MP, а для работы с бд уже не кошерно через синглтон цеплять базу к классу?
Koenig, хитрить не нужно. Нужно чтоб классы-респонденты указывали тип зависимости, а порождающий код им эти зависимости передавал.
L!MP, хитрить , это я про результат
Там же, да же, нельзя MySQLi Result свой сделать, насколько я помню.
L!MP, почему жестко?
function __construct()
{
$this->setting = registry::getFromMysqli(); // хоть какую жопу назначай в допустим registry::setFromMysqli(['connect' => new Config('mysqli'), 'cache' => new Cache()]); //бла бла бла
тут скорее вопрос вкуса. я понимаю о чем ты. "общепринятый" подход. но не единственный
}