【发布时间】:2015-03-11 17:45:20
【问题描述】:
我目前被盖章,我看不出我做错了什么。我在下面有一个静态函数 request():
private static function request(){
if($_SERVER['REQUEST_METHOD']=='GET'){
$data = RunData::get('cmd');
}
调用静态函数get(),后者又调用私有函数clean(),该函数使用在类构造函数中设置的变量加载注入类消毒
class RunData {
public static $sanitize;
public function __construct( Sanitize $sanitize ){
self::$sanitize = $sanitize;
}
private static function clean($variable_array){
if(is_array($variable_array)){
$filters = array('string' => 'sanitize_string');
return self::$sanitize->filter($variable_array, $filters);
}
}
public static function get($variable){
if(self::clean($_GET)){
return $_GET[$variable];
}
}
}
但是当我运行时,我得到了这个错误。
致命错误:在非对象上调用成员函数 filter()
此过滤器函数是从注入构造函数的 Sanitize 类加载的。
我可能错过了什么???构造函数似乎没有运行
谢谢
【问题讨论】:
-
当你只是静态调用类方法时,构造函数永远不会被调用,所以
self::$sanitize永远不会被设置
标签: php static-methods static-linking