Silex动态路由调用类控制器动态像Yii


Silex dynamic routing call ClassController dynamically like Yii

我无法找到像Yii那样使用silex动态路由的方法。

例如,config.php中的Yii有以下路由定义:
'<controller:'w+>/<id:'d+>'=>'<controller>/view',
'<controller:'w+>/<action:'w+>/<id:'d+>'=>'<controller>/<action>',
'<controller:'w+>/<action:'w+>'=>'<controller>/<action>',

所以它根据url路径动态调用控制器。那么如何在Silex中实现呢?我正在尝试这样做,但它不起作用:

$app->match('/{controller}/{action}', function($controller,$action) {
  $controller = ucwords($controller);
  $name = "Def'Controller'{$controller}Controller::{$action}Action";
  return new $name;
})->method('GET');

看起来您的$name变量有问题,因为您正在使用单个反斜杠,这是转义字符。另外,避免使用{%variable}语法。最好使用(.)点操作符将字符串的元素连接起来,因为这样更不容易出错,而且代码也更容易阅读。

试题:

$name = "Def''Controller''".$controller."Controller::".$action."Action";