Php 如何让类在Silex中扩展父类

Php 如何让类在Silex中扩展父类,php,silex,Php,Silex,是否可以在不创建ControllerResolver类的情况下执行此操作?我希望RootController和AuthController扩展控制器。我已经有密码了。。。扩展每个控制器中的控制器,但Silex不接收它 我也尝试过,但没有成功: $app['controller.root'] = $app->share($app->extend('controller.base', function() use ($app) { ........ 我可以试试parant::u构造$

是否可以在不创建ControllerResolver类的情况下执行此操作?我希望RootController和AuthController扩展控制器。我已经有密码了。。。扩展每个控制器中的控制器,但Silex不接收它

我也尝试过,但没有成功:

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


我可以试试parant::u构造$dependencies。。。。。。在每个子控制器中,但我认为这将开始看起来很混乱。

您不能使用构造函数进行扩展,但如果您有可用的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”这样的新名称。

我已经有了代码,这是什么意思。。。扩展每个控制器中的控制器,但Silex不接收它?如果您的类扩展了另一个类,那么Silex与之无关,它是简单的OOP。是的,如果子类具有特殊构造函数,则必须在子控制器中调用parent::_构造才能初始化父类。因此,方法可能是@Fractaliste建议的,而不是使用构造函数注入,使用setter,并通过使用extend方法扩展控制器来准备控制器。我认为最好添加到Pimple文档的链接。Pimple是Silex使用的DI管理器。Silex\应用程序扩展了“粉刺”。因此,如果您使用Silex v1-read。或者如果您使用Silex v2-
$app['controller.base'] = $app->share($app->extend('controller.base', function($controller) use ($app) {
    $controller->setUser($app['service.user']);
    return $controller;
});