Есть 4 класса: Db
, Core
, User
, Profile
. Profile
наседует User
, User
=> Core
, а Core
наследует Db
.
Вот я в User
написал метод
public function getColumn($column, $uId){
$uId = $this->cleanInt($uId);
$sGet = "SELECT `$column` FROM `users` WHERE `id` = $uId";
$qGet = $this->query($sGet, []);
return $qGet;
}
И когда я пытаюсь вызвать этот метод в классе Profile
(который наследует этот класс Юзер) мне пишет:
Call to a member function prepare() on null
А если я просто из файла index.php вызову
echo $user->getColumn('email', $_SESSION['u_id']);
То мне покажет результат. Что я не правильно делаю, подскажите, пожалуйста?
Profile наседует User, User => Core, а Core наследует Db.
Главная ошибка заключается в этом предложении.
Core никогда не должна наследовать Db, а User - ни Core, ни Db. Это совершенно разные сущности. Человек может наследовать млекопитающему, но не может наследовать кастрюле. Из кастрюли он просто ест. Поэтому кастрюля должна использоваться как сервис для человека. То есть, обхект класса db должен передаваться в объект класса Юзер в качестве сервиса, присваиваться свойству класса, и уже это свойство будет предоставлять методы для работы с БД.
Точно так же в классе User никогда не должно быть метода getColumn.
Во-первых, потому что там кругом sql инъекции, а во-вторых, получение колонки из таблицы - это работа класса Db, а не User. В классе юзер надо не экономить на спичках и дергать из базы по одной колонке, а при создании объекта читать из базы запись ЦЕЛИКОМ и присваивать значения полей БД свойствам объекта. И потом обращаться к ним напрямую.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Делаю по мануалу http://symfonycom/doc/current/cookbook/doctrine/event_listeners_subscribers
Нашел в интернете гайд по созданию чата на сайтеВроде делал всё, как там, но в поле не выводятся введённые сообщения
На платформе OpenServer [Apache_24