创建一个匿名对象并动态调用它的函数

时间:2015-03-20 04:07:23

标签: php uri

我正在尝试为我的网络创建某种调度程序(因为我必须手动执行此操作并且我能做到这一点)

$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;
}

这就是我所拥有的,但我得到了这个:

  • 严格标准:在第180行的C:\ wamp \ www \ BACK \ index.php中只能通过引用传递变量
  • 不推荐使用:函数call_user_method_array()在第180行的C:\ wamp \ www \ BACK \ index.php中弃用
  • 警告:call_user_method_array()需要3个参数,2在第180行的C:\ wamp \ www \ BACK \ index.php中给出

发送http://localhost/BACK/index.php/Page/data?asd=1

  • 警告:call_user_func()期望参数1是有效的回调,非线性方法Page :: __ construct()不能在第17行的C:\ wamp \ www \ BACK \ index.php中静态调用

发送http://localhost/BACK/index.php/Page?asd=1

我知道我完全错了,但我找不到帮助...

1 个答案:

答案 0 :(得分:0)

我改变了我的功能,现在正常工作

$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;
}