尝试将句柄作为构造函数参数传递时,“调用未定义的方法”

时间:2010-08-30 13:57:20

标签: php database class constructor handle

我有一个用户类,我需要使用我的数据库。为此,我将数据库句柄作为构造函数参数传递,如下所示:

的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()in   C:\ XAMPP \ htdocs中\类\ user.class.php   在第10行

我不确定是什么问题,也许我错误地将它传递给了数据库的句柄,但我想不出有任何其他方法可以做到这一点。即使我在我的用户类中将$db变量设置为public,我也会收到此错误。

有人可以帮忙吗?感谢。

2 个答案:

答案 0 :(得分:3)

host_info不是方法,它是对象的属性。

您应该使用:

echo $this->db->host_info;

有关详细信息,请参阅官方文档:

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

答案 1 :(得分:0)

在这种情况下,

host_info不是方法。这是一个属性。尝试:

echo $this->db->host_info;