0

全局变量是前面已经定义的类(对象)

class Users
{
    private $sql;

    public function __construct() {
        global $sql;
        $this->$sql = $sql;
    }
}

我正在尝试将对象分配给我的其他类(用户)中的私有变量,所以我不必在global $sql;所有函数中使用这一行,Users但它给了我这个错误:

Catchable fatal error: Object of class Bdcon could not be converted to string in /home/<<NAME>>/public_html/<<NAME>>/classes/class.users.php on line 8

4

3 回答 3

1

您不能(通常)使用对象作为属性名称:

$this->$sql
       ^

但你并不真正想要:

$this->sql

无论如何,我推荐这种其他风格:

class Users
{
    private $sql;

    public function __construct(Bdcon $sql) {
        $this->sql = $sql;
    }
}
于 2013-03-04T10:53:04.440 回答
1

您没有private $sql以正确的方式访问。它应该是:

$this->sql = $sql;

您收到错误的原因是,如果您使用$this->$sql,$sql被强制转换为字符串,并且 php 会尝试查找名称为 的属性$sql

于 2013-03-04T10:53:54.080 回答
0

使用$this->sql.,因为您正在访问类的属性,因此无需添加 $ 符号而是使用$this->

于 2013-03-04T10:52:48.943 回答