Конструктор класса PHP не работает при вызове из статической функции в другом классе

Я сейчас проштампован, и я не вижу, где я сделал это неправильно. У меня есть статическая функция запрос() ниже:

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 Класс, который вводится в конструктор.

Что я, возможно, пропустил ??? Конструктор не работает

Спасибо

0

Решение

Ты прав, __construct() не вызывается, когда класс вызывается статически. Вам нужно будет настроить объект вручную, введя Sanitize класс через какой-то метод установки перед вызовом метода.

Например:

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

Затем:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]