Вызов неопределенного метода при попытке передать дескриптор в качестве аргумента конструктора

У меня есть пользовательский класс, с которым мне нужно использовать мою базу данных. Для этого я передаю дескриптор базы данных в качестве аргумента конструктора, например:

index.php:

<?php

include('classes/user.class.php');

$db = new mysqli('localhost', 'root', '', 'testdb');
if ($mysqli->connect_error)
{
    die('Database connection failed (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
}

$user = new User($db);

$db->close();

?>

user.class.php:

<?php

class User
{
    private $db;

    function __construct($db)
    {
        $this->db = $db;
        echo $this->db->host_info();
    }
}

?>

Но я получаю такую ​​ошибку:

Неустранимая ошибка: вызов неопределенного метода mysqli :: host_info () в C: \ xampp \ htdocs \ classes \ user.class.php в строке 10

Я не уверен, что не так, возможно, я неправильно передаю дескриптор в базу данных, но я не могу придумать другого способа сделать это. Даже если я установил переменную $db как общедоступную в моем пользовательском классе, я получаю эту ошибку.

Кто-нибудь может помочь? Спасибо.


person Will    schedule 30.08.2010    source источник


Ответы (2)


host_info - это не метод, это свойство объекта.

Вам следует использовать:

echo $this->db->host_info;

Для получения дополнительной информации вы можете обратиться к официальной документации:

http://ca2.php.net/manual/fr/mysqli.get-host-info.php

person HoLyVieR    schedule 30.08.2010
comment
Вздох. Должен был это заметить. Спасибо. - person Will; 30.08.2010

host_info в этом случае не является методом. это собственность. пытаться:

echo $this->db->host_info;
person Hugo Mota    schedule 30.08.2010