Я сейчас проштампован, и я не вижу, где я сделал это неправильно. У меня есть статическая функция запрос() ниже:
private static function request(){
if($_SERVER['REQUEST_METHOD']=='GET'){
$data = RunData::get('cmd');
}
который вызывает статическую функцию получить() который в свою очередь вызывает приватную функцию чистой () который использует переменные, установленные в конструкторе класса, загружая класс Injected 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 Класс, который вводится в конструктор.
Что я, возможно, пропустил ??? Конструктор не работает
Спасибо
Ты прав, __construct()
не вызывается, когда класс вызывается статически. Вам нужно будет настроить объект вручную, введя Sanitize
класс через какой-то метод установки перед вызовом метода.
Например:
public static function setSanitizeClass(Sanitize $sanitise)
{
self::$sanitize = $sanitize;
}
Затем:
RunData::setSanitizeClass(new Sanitize());
$data = RunData::get('cmd');
Других решений пока нет …