我有以下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()
答案 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);
}
}