我目前已加盖印章,我无法看到我做错了什么。我在下面有一个静态函数 request():
private static function request(){
if($_SERVER['REQUEST_METHOD']=='GET'){
$data = RunData::get('cmd');
}
调用静态函数 get(),后者又调用私有函数 clean(),它使用在类构造函数中设置的变量加载Injected类消毒
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 类加载,该类被注入构造函数。
我可能错过了什么?构造函数似乎没有运行
由于
答案 0 :(得分:0)
您更正了,静态调用类时不会调用__construct()
。在调用方法之前,您需要通过某种设置方法注入Sanitize
类来手动设置对象。
例如:
public static function setSanitizeClass(Sanitize $sanitise)
{
self::$sanitize = $sanitize;
}
然后:
RunData::setSanitizeClass(new Sanitize());
$data = RunData::get('cmd');