2013-03-04 158 views
0

全局变量已经定义的类(对象)早些时候对象无法转换为字符串

class Users 
{ 
    private $sql; 

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

我试图分配对象为私有变量我在其他类(用户),所以我没有通过所有的功能Users使用此行global $sql;,但它给我这个错误:

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

+0

您应该将'$ sql'传递给您的构造函数,以获得更清晰,更清晰的代码。 – AmazingDreams 2013-03-04 10:52:24

回答

1

你不能(正常)使用一个对象作为属性名称:

$this->$sql 
    ^

但你并不真的想:

$this->sql 

不管结果如何,我推荐这个其他风格:

class Users 
{ 
    private $sql; 

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

使用$this->sql.,因为你正在访问类的属性,因此没有必要添加$签署改用$this->

1

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

$this->sql = $sql; 

你的错误是,如果你使用$this->$sql$sql被强制转换为字符串和PHP试图寻找与$sql值的名称的属性的原因。