PHP Class 构造函数不是 运行 当从另一个 class 中的静态函数调用时

PHP Class constructor not running when called from static function in another class

我现在被戳了,看不出哪里做错了。我在下面有一个静态函数 request():

private static function request(){

   if($_SERVER['REQUEST_METHOD']=='GET'){

       $data = RunData::get('cmd');

   }

调用静态函数 get(),后者又调用私有函数 clean(),后者使用 class 构造函数加载 Injected class Sanitize

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];

        }

    }


}

但是当我 运行 我得到这个错误。

Fatal error: Call to a member function filter() on a non-object

这个过滤器函数是从 Sanitize Class 加载的,它被注入到构造函数中。

我可能错过了什么???构造函数好像不是运行ning

谢谢

你是对的,静态调用 class 时不会调用 __construct()。在调用方法之前,您需要通过某种设置方法注入 Sanitize class 来手动设置对象。

例如:

public static function setSanitizeClass(Sanitize $sanitise)
{
    self::$sanitize = $sanitize;
}

然后:

RunData::setSanitizeClass(new Sanitize());
$data = RunData::get('cmd');