我正在使用PHP5.6,并尝试制作一个基本路由器。我正在使用一个小的uri -> array(class, method)
地图,然后用call_user_func调用它,如下所示:
$uriMap = [
'' => ['IndexController', 'hello'],
'dpo/' => ['DpoToolsController', 'hello'],
];
$instance = $uriMap[$uri][0];
$method = $uriMap[$uri][1];
$result = call_user_func(new $instance, $method, $_REQUEST);
在我开始命名间隔之前,这确实非常有效。
use DPO\DpoToolsController;
use Portal\IndexController;
我可以使用$ctrl = new DpoToolsController()
实例化一个新的DpoToolsContoller,但是上面的函数call_user_func()
不再可用,因为它找不到该类。
我当然可以在URL映射中包含名称空间,但是我认为使用use
的目的是我们不必这样做。
是否有解决方案,例如以编程方式确定字符串引用类的名称空间?