Правильное наследование классов в php

183
19 декабря 2016, 19:32

Есть к примеру 3 класса

Db, Core, User

Раньше я делал так наследование

User наследовал Core, Core наследовал Db

Сказали что это не правильно в корне, что так быть не должно.

Вот и возник вопрос, как же правильно наследовать?..

Сейчас пробую вот так

class User{
public $core, $db = null;
function __construct(){
    global $core, $db;
    $this->core = $core;
    $this->core = $db;
}
public function getTets(){
    echo $this->core->coreTest();
}
}

Всё работает как нужно, но вот вопрос: Как же правильно наследовать?

Answer 1

Вам скорее всего щас распишут портянки про ООП и то, как вы путаете наследование с композицией/агрегацией. Если кратко по теме: наследовать только для использования стороннего кода - идея плохая (потому что связанность там, где ее быть не должно). Ваш пример уже лучше, еще лучше он станет, если вы $core и $db будете засылать через параметры конструктора, а не через global (инжект). Через параметры конструктора имеет смысл передать то, без чего класс работать однозначно не сможет. Остальное можно сетерами отдельными инициализировать.

READ ALSO
Валидация поля, которое не передается из представления

Валидация поля, которое не передается из представления

У меня есть, к примеру, таблица Сообщений, в которой я записываю пользователя, который оставил сообщение

169
PHP pthreads крашится

PHP pthreads крашится

Вот мой код по парсингу ссылокНо он почему-то крашит php:

169
Подгрузка с помощью spl_autoload( ) только файлов '*.php'

Подгрузка с помощью spl_autoload( ) только файлов '*.php'

Функции spl_autoload() в качестве параметра передается имя неизвестного класса, которое затем преобразуется в имя файлаДля этого имя класса преобразуется...

171