2013-03-04 157 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值的名稱的屬性的原因。