170 похожих чатов

Приветствую всех. Уже какой день пытаюсь разобраться в ООП, но

что-то пока не выходит.

Не совсем понимаю, как инициализировать дочерний класс, который бы включал в себя свойства родительского класса, но без повторной инициализации конструктора последнего?

Условно, у меня есть класс System и его дочка User.
В конструкторе System прописано подключение к базе.
И получается, что я инициализирую $system = new System(login, password, db, host).
А после мне нужно инициализировать $user = new User(); И все бы ничего, но поскольку в User нет конструктора, он требует от меня в User занести данные от базы, ибо используется конструктор от Родительского класса. Я явно что-то делаю не так, перечитал много статей, но так и не пойму.

23 ответов

12 просмотров

Не используй наследование если не знаешь

Shikhovtsev-Shikhovtsev Автор вопроса
Nikolay Underground
Не используй наследование если не знаешь

Если выражаться в логике, то мне в принципе стоит бросить изучении ООП и остаться на процедурке, ведь ООП я не знаю)

Shikhovtsev-Shikhovtsev Автор вопроса
Dancing Іңұқәһүғө
Подключение к БД обычно хранится синглтоне

Если вы имеете в виду, что бд должен быть отдельным классом - то так и есть.

Shikhovtsev-Shikhovtsev Автор вопроса
Dancing Іңұқәһүғө
У тебя есть статический класс или синглтон бд

У меня обычный класс с бд, самый примитивный. https://prnt.sc/FygjT0P_3iF0 Буду рад услышать ошибки, они явно есть.

ты не можешь создать юзера без параметров для систем: либо в конструктор передавай, либо в конструкторе юзера прокидывай к родительскому

Shikhovtsev-Shikhovtsev Автор вопроса
Max
ты не можешь создать юзера без параметров для сист...

Тобеж, как я выше показал? Я думал, это костыль.

В ООП принцип IS-A основан на наследовании классов или реализации интерфейсов. Например, если класс HeavyBox наследует Box , мы говорим, что HeavyBox является Box (HeavyBox IS-A Box). а у тебя получается User это System

Shikhovtsev-Shikhovtsev Автор вопроса
Max
В ООП принцип IS-A основан на наследовании классов...

Да, всё правильно. Ибо в User мне нужны функции из System. Как это реализовать иначе - я не понял. Самое забавное, читаю материалы и статьи, и они делятся на два уровня: Для совсем новичков (база наследования без объяснения конкретики наследования функций и свойств) и база для профи (написание ядра, контроллеры, что тоже не для моего уровня еще)

Shikhovtsev Shikhovtsev
Да, всё правильно. Ибо в User мне нужны функции из...

ну у тебя отношения не is-a, передавай в конструктор класса User инстанс класса System

Max
да

Зачем так делать

а что делает класс System?

Shikhovtsev-Shikhovtsev Автор вопроса
🦔
а что делает класс System?

Обертка для БД + вспомогательные функции Конвертера валют, вывода ошибок, функция Request Curl.

Shikhovtsev Shikhovtsev
Обертка для БД + вспомогательные функции Конвертер...

чёт многовато ответственностей для одного класса

Shikhovtsev-Shikhovtsev Автор вопроса
🦔
чёт многовато ответственностей для одного класса

Ну-с, не вижу смысла перекидывать один метод конвертации валют в отдельный класс.

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта