0

我有以下 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);

}

但是,这会产生错误。如何从类 connect 调用 $sql 变量的 real_escape_string 方法?

干杯!

PS:更新,报错是 Fatal error: Call to undefined method connect::real_escape_string()

4

3 回答 3

3

构造函数不能返回值;返回值是隐含的(一个新的对象实例)。

在您的示例中,$dbconn是 class 的对象connect。它不是 class 的对象mysqli,所以它没有real_escape_string方法。该return $sql声明无效,因为它没有意义。

您可能打算扩展mysqli(这会很痛苦,因为您必须转发所有构造函数参数),或者改为公开一个mysqli成员。

于 2013-03-02T21:32:19.630 回答
2

类 connect 将返回一个 connect 实例,而不是 mysqli。也许尝试:

class connect extends mysqli {
  function __construct() {
    parent::__construct(..);
  }
}
于 2013-03-02T21:33:18.450 回答
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);
    }
}
于 2013-03-02T21:36:30.970 回答