如何让类在Silex中扩展父类

时间:2015-01-19 00:18:42

标签: php silex

是否可以在不创建ControllerResolver课程的情况下执行此操作?我希望RootControllerAuthController扩展Controller。我已经在每个代码中都有代码... extends Controller但是Silex没有提取它。

我也试过但没有工作:

$app['controller.root'] = $app->share($app->extend('controller.base', function() use ($app) {
........

// Register Controllers
$app['controller.base'] = $app->share(function() use ($app) {
   return new Controller(
       $app['twig'],
       $app['session'],
       $app['form.factory'],
       $app['url_generator']);
});

$app['controller.root'] = $app->share(function() use ($app) {
    return new RootController(
        $app['service.user']);
}));

$app['controller.auth'] = $app->share(function() use ($app) {
   return new AuthController(
        $app['service.google'],
        $app['service.user'],
        $app['service.meetup']);
});

我可以在每个子控制器中尝试parant::__construct($dependencies......),但我认为这将开始看起来很混乱。

1 个答案:

答案 0 :(得分:0)

您无法使用构造函数进行扩展,但如果您有可用的setter,则可以尝试:

$app['controller.base'] = $app->share($app->extend('controller.base', function($controller) use ($app) {
    $controller->setUser($app['service.user']);
    return $controller;
});

小心,您的例子有逻辑问题,如果您扩展服务,它应该具有相同的名称'controller.base',而不是像'controller.root'那样的新名称。