@VaniXac
17 лет

Почему $pdo не во всем проекте?

Ключевая модель, от которой все остальные наследуются:
<?php
class Model {
	protected $pdo;

	protected function __constructor() {
		$dbname = 'registratura';
		$dbuser = 'root';
		$dbpass = '';
		$host = 'localhost';
		$this->pdo = new PDO("mysql:host=".$host.";dbname=".$dbname, $dbuser, $dbpass);
	}

	protected static function getAll($table) {
		return $pdo->query("SELECT * FROM $table");
	}	
}


Выдает ошибку что $pdo (который в getAll) не имеет метода query, то есть, это абсолютно разные переменные.
Fatal error: Call to a member function query() on null in C:\OpenServer\domains\registratura.loc\app\model\Model.php on line 15
  • Вопрос задан
  • 192 просмотра
Решения вопроса 1
Decadal
@Decadal
эм
во-первых, это статическая функция, она не может обращаться к нестатическим полям класса.
во-вторых, обращение к полю класса осуществляется через $this-> или через self::

чтобы оно заработало, уберите static для getAll и добавьте к pdo - $this. Чтобы получилось $this->pdo->query();

А вообще то как вы используете pdo это просто космос
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
я так понимая $pdo надо заменить на $this->pdo, так как Вы запрашиваете метод у null, как следствие и ошибка. Думаю стоит включить вывод всех ошибок, что бы не было таких проблем, он бы сразу "отругался" на появившуюся из воздуха переменную
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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