2013-03-02 79 views
1

我有以下的PHP類:PHP類訪問變量

class connect { 

public function __construct() { 

$sql = new mysqli(...); 

return $sql; 

} 

(當然,這並不是全部的代碼,只是給你的想法

那麼我:

class two { 

public function validateInput($input) { 

$dbconn = new connect(); 

return $dbconn->real_escape_string($input); 

}

然而,這會產生一個錯誤。我怎麼能說上$ SQL VARI的real_escape_string方法從班級連接?

乾杯!

PS:更新,該錯誤是致命錯誤:調用未定義方法連接:: real_escape_string()

+0

錯誤是什麼樣的? – hjpotter92 2013-03-02 21:31:18

+0

看到這個:http://stackoverflow.com/questions/6849572/returning-a-value-in-constructor-function-of-a-class-php – 2013-03-02 21:47:44

回答

3

構造不能返回值;隱含返回值(一個新的對象實例)。

在你的例子中,$dbconn是類connect的一個對象。它不是類mysqli的對象,所以它沒有real_escape_string方法。 return $sql聲明不起作用,因爲它沒有意義。

您可能打算延長mysqli(因爲所有必須轉發的構造函數參數,這將是一個痛苦),或者代之以公開mysqli成員。

2

類連接將返回連接的一個實例,而不是mysqli。也許嘗試:

class connect extends mysqli { 
    function __construct() { 
    parent::__construct(..); 
    } 
} 
0

您可能會尋找更多的東西一樣:

class connect { 
    public function __construct() { 
     $this->sql = new mysqli(...); 
    } 

    public function real_escape_string($string) { 
     // Process $string using $this->sql; 
     return $string 
    } 
} 

class two { 
    public function validateInput($input) { 
     $dbconn = new connect(); 

     return $dbconn->real_escape_string($input); 
    } 
}