@oop_ru

Страница 618 из 785
Ihor
24.04.2018
12:33:43
Как вы смотрите, с точки зрения ООП, на конструктор в абстрактном классе?)

Гена
24.04.2018
12:38:56
прекрасно

Artem
24.04.2018
12:52:01
а что смущает?

Гена
24.04.2018
13:02:11
главное еще сделать в конструкторе вызов абстрактной функции например init() , которая будет описана в конечном классе и дополнительно инициализировать объект abstract class MyClass { public function __construct($data) { // Готовим данные абстрактного класса, сетим основные данные // ....... // Готовим или подменяем данные уже в наследнике $this->init($data); } abstract protected function init($data); }

Google
Артур Евгеньевич
24.04.2018
13:06:08
Как вы смотрите, с точки зрения ООП, на конструктор в абстрактном классе?)
негативно, как и на абстрактные классы в принципе

Mykola
24.04.2018
13:06:38
а я так и не разобрался в конструкторах...

сложно

Roman
24.04.2018
13:06:59
негативно, как и на абстрактные классы в принципе
но если они уже есть, то чем конструктор в них ухудшит что то?

Артур Евгеньевич
24.04.2018
13:07:41
ее не должно быть в асбтракции

Roman
24.04.2018
13:09:01
ее не должно быть в асбтракции
перефразирую вопрос, если уже есть абстрактный класс в котором уже есть реализация каких то методов, то чем добавление конструктора ухудшит что то?

Max
24.04.2018
13:10:01
Как вы смотрите, с точки зрения ООП, на конструктор в абстрактном классе?)
ни как, от слова совсем, это тоже самое что и трейт, с точки зрения абстракции и тп он не несет никакого смысла так как инстанс не может быть создан

Mykola
24.04.2018
13:10:18
по этому добавление явного конструктора ничего не поменяет с точки зрения дизайна абстрактного класса

Roman
24.04.2018
13:11:40
Google
Артур Евгеньевич
24.04.2018
13:14:16
а чем это отличается от parent/super вызова?
свою функцию можно сделать обязательной для реализации + сигнатуру описать. для конструктора не знаю возможно ли такое

Гена
24.04.2018
13:15:24
а чем это отличается от parent/super вызова?
обязательность реализации метода

Max
24.04.2018
13:16:56
свою функцию можно сделать обязательной для реализации + сигнатуру описать. для конструктора не знаю возможно ли такое
ну такое, и скорее всего этот метод будет протектед, в принципе тоже самое, что и абстрактные методы в трейтах

те полиморфизм здесь не причем

так как реализация метода нужна только для инциализации объекта

Артур Евгеньевич
24.04.2018
13:18:01
ну я просто предположил, я ни трейты, ни протектед ни абстрактные классы не юзаю обычно)

Max
24.04.2018
13:20:14
ну и абстрактные protected методы это больше про реализацию

Артур Евгеньевич
24.04.2018
13:27:37
нет, делю ответственности и юзаю аггрегацию

Maksim
24.04.2018
13:27:50
тот неловкий момент, когда ощущаешь себя недочеловеком: и абстрактные классы, и конструкторы в оных, и протектед методы - усё есть)

Maksim
24.04.2018
14:09:33
фу таким быть
не знаю, мне ок)

Артур Евгеньевич
24.04.2018
14:09:50
тот неловкий момент, когда ощущаешь себя недочеловеком: и абстрактные классы, и конструкторы в оных, и протектед методы - усё есть)
так у меня тоже есть в проекте, но целеноправленно я их не юзаю, и понимаю какие траблы из за этого говна)

Sergey
24.04.2018
14:10:22
Как вы смотрите, с точки зрения ООП, на конструктор в абстрактном классе?)
если у тебя есть конструктор в абстрактном классе значит 90% что то что в абстрактном классе можно вынести как просто зависимость которую можно заинджектить. Это будет намного более разумно с точки зрения связанности.

Maksim
24.04.2018
14:10:38
так у меня тоже есть в проекте, но целеноправленно я их не юзаю, и понимаю какие траблы из за этого говна)
да хер знает где вы траблы находите) я существо тупое, пока чёт не упарывался :(

Sergey
24.04.2018
14:10:55
с другой стороны если мы закроем глаза на необходимость "пробрасывать" зависимости базового типа, и весь стэйт private то как бы не то что бы и сильно плохо

Sergey
24.04.2018
14:11:33
да хер знает где вы траблы находите) я существо тупое, пока чёт не упарывался :(
тож хз, ну подумаешь следить сложнее будет за инвариантами.... как будто кто-то особо следит)

скорее всего это сделано, чтобы в насделниках не копипастить конструктор
хз надо смотреть почему так. Но это может быть симптомом проблем с декомпозицией

Google
Sergey
24.04.2018
14:12:28
ну и я бы лучше скопипастил конструктор)

это не будет дублированием в общем

Sergey
24.04.2018
14:13:09
ну чем сложнее-то?)
ну это чуть проще чем следить за глобальными переменными

хер знает кто потом будет ими пользоваться и завяжет свой код на них

Maksim
24.04.2018
14:14:39
блин) без кода тяжко) я не понимаю в чём эфимерная сложность возникает и как всё это можно сравнивать с глобалами :(

Sergey
24.04.2018
14:21:02
блин) без кода тяжко) я не понимаю в чём эфимерная сложность возникает и как всё это можно сравнивать с глобалами :(
сложность только когда у тебя public/protected стэйт. Если весь стэйт базового класса private то все норм

Maksim
24.04.2018
14:24:09
угу, с примером стало понятнее)

Страница 618 из 785