对象无法转换为字符串

时间:2013-03-04 10:49:40

标签: php

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

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

3 个答案:

答案 0 :(得分:1)

您无法(通常)将对象用作属性名称:

$this->$sql
       ^

但你真的不想要:

$this->sql

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

class Users
{
    private $sql;

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

答案 1 :(得分:1)

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

$this->sql = $sql;

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

答案 2 :(得分:0)

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