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

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

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

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

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

23 ответов

13 просмотров

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

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

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

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
7
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Карта сайта