我有:
public $staticRoutes = array(
'dog-toys' => 'Index',
) ;
if(array_key_exists($controller, $this->staticRoutes))
{
$controller = new $controller ;
}
新的$控制器正在变成'狗玩具',这不是我想要的。
如何更改$controller = new Index ;
?
答案 0 :(得分:2)
一些变体:
$controller = new ${staticRoutes[$controller]} ;
我现在无法测试,所以为了安全起见,你也可以这样做:
$ctrl = $staticRoutes[$controller];
$controller = new $ctrl;
答案 1 :(得分:1)
您需要实际使用$staticRoutes
数组,如下所示:
$controller_instance = new $this->staticRoutes[$controller];
注意为了清楚起见,我更改了您指定的变量的名称。我还假设尝试实例化此控制器的代码位于定义$staticRoutes
属性的同一个类(或继承类)中(因此使用$this
)。