что-то пока не выходит.
Не совсем понимаю, как инициализировать дочерний класс, который бы включал в себя свойства родительского класса, но без повторной инициализации конструктора последнего?
Условно, у меня есть класс System и его дочка User.
В конструкторе System прописано подключение к базе.
И получается, что я инициализирую $system = new System(login, password, db, host).
А после мне нужно инициализировать $user = new User(); И все бы ничего, но поскольку в User нет конструктора, он требует от меня в User занести данные от базы, ибо используется конструктор от Родительского класса. Я явно что-то делаю не так, перечитал много статей, но так и не пойму.
Не используй наследование если не знаешь
Если выражаться в логике, то мне в принципе стоит бросить изучении ООП и остаться на процедурке, ведь ООП я не знаю)
Я бы посоветовал пройти курс пхп старт
Подключение к БД обычно хранится синглтоне
Если вы имеете в виду, что бд должен быть отдельным классом - то так и есть.
Не надо наследование здесь
У тебя есть статический класс или синглтон бд
У меня обычный класс с бд, самый примитивный. https://prnt.sc/FygjT0P_3iF0 Буду рад услышать ошибки, они явно есть.
ты не можешь создать юзера без параметров для систем: либо в конструктор передавай, либо в конструкторе юзера прокидывай к родительскому
Тобеж, как я выше показал? Я думал, это костыль.
В ООП принцип IS-A основан на наследовании классов или реализации интерфейсов. Например, если класс HeavyBox наследует Box , мы говорим, что HeavyBox является Box (HeavyBox IS-A Box). а у тебя получается User это System
Да, всё правильно. Ибо в User мне нужны функции из System. Как это реализовать иначе - я не понял. Самое забавное, читаю материалы и статьи, и они делятся на два уровня: Для совсем новичков (база наследования без объяснения конкретики наследования функций и свойств) и база для профи (написание ядра, контроллеры, что тоже не для моего уровня еще)
ну у тебя отношения не is-a, передавай в конструктор класса User инстанс класса System
Тобеж, new user($system)?
Зачем так делать
а что делает класс System?
Обёртка над бд
Обертка для БД + вспомогательные функции Конвертера валют, вывода ошибок, функция Request Curl.
чёт многовато ответственностей для одного класса
Ну-с, не вижу смысла перекидывать один метод конвертации валют в отдельный класс.
Обсуждают сегодня