Как можно использовать несколько классов php, которые наследуются от одного и того же класса, в одном файле php?

У меня есть класс DB, подключение к MySQL

Также есть 2 класса User и Post например, они наследуются от класса DB

Мне нужно в одном файле php использовать и класс User, и класс Post, и при подключении обоих классов появляется ошибка, что класс DB уже подключен, почему так происходит я понял, так как при подключении User класса, автоматом подключается и DB, а после попытки подключения Post, опять будет попытка подключения DB, использую require_once для подключения.


Ответы (1 шт):

Автор решения: Ипатьев

Начать надо с того, что классы User и Post не должны наследоваться от DB. Ни пользователь,ни публикация не являются подключением к MySQL.

Они его только используют. И поэтому классы User и Post должны использовать класс DB, а не наследовать ему. Получая его экземпляр через конструктор.

и если на странице нужны объекты всех трех классов, то все три и создать

$db = new DB();
$user = new User($db);
$post = new Post($db);

при этом никакое require_once для загрузки классов использоваться не должно, вместо этого должна использоваться автозагрузка классов.

Либо с помощью своей собственной функции, типа такой

spl_autoload_register(function ($className) {
    $className = str_replace('\\', '/', $className);
    require __DIR__ . "/$className.php";
});

либо с помощью Композера

→ Ссылка