Я получаю следующее сообщение об ошибке при попытке вызвать метод из класса Singleton внутри другого класса.Вызов функции-члена в PHP
Вызов функции-функции члена() для объекта, не являющегося объектом.
Я получаю следующее сообщение об ошибке при попытке вызвать метод из класса Singleton внутри другого класса.Вызов функции-члена в PHP
Вызов функции-функции члена() для объекта, не являющегося объектом.
$db
должно быть $this->db
.
public function __construct() {
$this->db = Database::getInstance('localhost', 'database', 'root', '123456');
}
Просто измените $db
в конструкторе $this->db
. В свойствах членов PHP обращается явная ссылка на объект $this
.
Кроме того, вы совершили ту же ошибку в своем классе базы данных. Кроме того, указание метода connect() как статического не имеет большого смысла. Кроме того, если вы спросите меня, то квалификатор private
будет более подходящим, чем public
. Наконец, если вы не намерены обрабатывать исключение в другом месте, используйте только die()
вместо echo
.
public function connect($server, $database, $user, $pass) {
try {
$this->pdo = new PDO("mysql:host=$server;dbname=$database", $user, $pass);
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo "Error!";
}
}
В методе query()
также использовать $this->pdo
вместо того, чтобы просто $pdo
.
Я сейчас get Call для функции-функции-члена() для не-объекта в Database.class.php – Vinny
Вам необходимо назначить $ pdo как $ this-> pdo в базе данных в дополнение к присвоению $ db $ this-> db в конструкторе Users.
Код, пожалуйста ... – NullUserException
Возможные причины: использование глобальной переменной '$ variable', без использования' global $ variable' или '$ GLOBALS ['variable']' – Lekensteyn