Создание анонимного объекта и динамический вызов функции из него

Я пытаюсь создать своего рода диспетчер для своего веб-сайта (потому что я должен сделать это вручную и узнать, как я могу это сделать)

$uri = array_filter(explode("/", filter_input(INPUT_SERVER, "PATH_INFO")));
$_SERVER["URI"] = $uri;

switch (sizeof($uri)) {
case 0:
error();
exit(0);
break;
case 1:
call_user_func("$uri[1]::__construct");
break;
default :
call_user_method_array("$uri[2]", call_user_func("$uri[1]::getInstance"));
break;
}

Это то, что у меня есть, но я получаю это:

  • Строгие стандарты: только переменные должны передаваться по ссылке в C: \ wamp \ www \ BACK \ index.php в строке 180
  • Не рекомендуется: Функция call_user_method_array () устарела в C: \ wamp \ www \ BACK \ index.php в строке 180
  • Предупреждение: call_user_method_array () ожидает ровно 3 параметра, 2 из которых указаны в C: \ wamp \ www \ BACK \ index.php в строке 180

Отправка HTTP: //localhost/BACK/index.php/Page/data ASD = 1

а также

  • Предупреждение: call_user_func () ожидает, что параметр 1 является допустимым обратным вызовом, нестатический метод Page :: __ construct () не может быть вызван статически в C: \ wamp \ www \ BACK \ index.php в строке 17

Отправка HTTP: //localhost/BACK/index.php/Page ASD = 1

Я знаю, что я совершенно неправ, но я не могу найти помощь …

-1

Решение

Я изменил свою функцию и теперь работает правильно

$uri = array_filter(explode("/", filter_input(INPUT_SERVER, "PATH_INFO")));
$_SERVER["URI"] = $uri;

switch (sizeof($uri)) {
case 0:
error();
exit(0);
break;
case 1:
$refClass = new ReflectionClass("$uri[1]");
$class_instance = $refClass->newInstanceArgs((array) null);
break;
default :
$refClass = new ReflectionClass("$uri[1]");
$class_instance = $refClass->newInstanceArgs((array) null);
$class_instance->$uri[2]();
break;
}
0

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

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

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