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

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

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

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

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

23 ответов

15 просмотров

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

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 Автор вопроса
🦔
чёт многовато ответственностей для одного класса

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта