从另一个类中的静态函数调用时,PHP类构造函数未运行

从另一个类中的静态函数调用时,PHP类构造函数未运行,php,static-methods,static-linking,Php,Static Methods,Static Linking,我现在已经盖章了,我看不出哪里做错了。我有一个静态函数request()如下: private static function request(){ if($_SERVER['REQUEST_METHOD']=='GET'){ $data = RunData::get('cmd'); } 它调用一个静态函数get(),然后调用一个私有函数clean(),该函数使用类构造函数中设置的变量加载一个注入类Sanitize class RunData { pu

我现在已经盖章了,我看不出哪里做错了。我有一个静态函数request()如下:

private static function request(){

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

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

   }
它调用一个静态函数get(),然后调用一个私有函数clean(),该函数使用类构造函数中设置的变量加载一个注入类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];

        }

    }


}
但当我运行时,我得到了这个错误

致命错误:对非对象调用成员函数filter()

此筛选函数是从注入构造函数的Sanitize类加载的

我可能错过了什么???构造函数似乎没有运行


谢谢

你说得对,静态调用类时不会调用
\u construct()
。在调用方法之前,您需要通过某种设置方法注入
Sanitize
类来手动设置对象

例如:

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

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

当您只是静态地调用类方法时,将永远不会调用构造函数,因此将永远不会设置
self::$sanitize
。我试图了解如何在不必初始化其他类或方法的情况下完成此操作。看来我得重做一些代码了,没办法。