«Вызов неопределенного метода» при попытке передать дескриптор в качестве аргумента конструктора - PullRequest
0 голосов
/ 30 августа 2010

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

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 на public в своем пользовательском классе, я получу эту ошибку.

Кто-нибудь может помочь? Благодаря.

Ответы [ 2 ]

3 голосов
/ 30 августа 2010

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

Вы должны использовать:

echo $this->db->host_info;

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

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

0 голосов
/ 30 августа 2010

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

echo $this->db->host_info;
...