创建一个匿名对象并从中动态调用一个函数
Creating an anonymous object and call a function from it dynamically
我正在尝试为我的网站创建某种类型的调度程序(因为我必须手动完成,我不知道我该怎么做)
$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.[=45 中静态调用=] 第 17 行
发送http://localhost/BACK/index.php/Page?asd=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;
}
我正在尝试为我的网站创建某种类型的调度程序(因为我必须手动完成,我不知道我该怎么做)
$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.[=45 中静态调用=] 第 17 行
发送http://localhost/BACK/index.php/Page?asd=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;
}