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

Php &引用;调用未定义的方法“;尝试将句柄作为构造函数参数传递时,php,database,class,constructor,handle,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_err

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

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::中的主机信息() C:\xampp\htdocs\classes\user.class.php 第10行

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


有人能帮忙吗?谢谢。

主机信息不是方法,而是对象的属性

你应使用:

echo $this->db->host_info;
有关更多信息,请参阅官方文档:


主机信息不是一个方法,它是对象的一个属性

你应使用:

echo $this->db->host_info;
有关更多信息,请参阅官方文档:


在这种情况下,主机信息不是一种方法。这是一种财产。尝试:

echo $this->db->host_info;

在这种情况下,主机信息不是一种方法。这是一种财产。尝试:

echo $this->db->host_info;

唉。我应该发现的。谢谢,叹气。我应该发现的。谢谢