Как можно использовать несколько классов 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";
});
либо с помощью Композера