php类访问变量

时间:2013-03-02 21:28:55

标签: 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);

}

但是,这会产生错误。如何从类connect?

调用$ sql变量的real_escape_string方法

干杯!

PS:更新,错误是致命错误:调用未定义的方法connect :: real_escape_string()

3 个答案:

答案 0 :(得分:3)

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

在您的示例中,$dbconn是类connect的对象。它不是类mysqli的对象,因此它没有real_escape_string方法。 return $sql语句无效,因为它没有意义。

您可能打算扩展mysqli(由于您必须转发的所有构造函数参数,这会很痛苦),或者代之以公开mysqli成员。

答案 1 :(得分:2)

类连接将返回连接的实例,而不是mysqli。也许试试:

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

答案 2 :(得分: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);
    }
}