如果多个bundle在symfony中覆盖同一个控制器会发生什么?


What happens if multiple bundles overwrite the same controller in symfony?

我想做一个bundle,我希望其他bundle通过覆盖功能或添加功能来扩展它。SYmfony支持开箱即用(http://symfony.com/doc/2.0/cookbook/bundles/inheritance.html),但是如果多个bundle试图覆盖同一个控制器会发生什么呢?它是否具有链式效应,即每个bundle在它之前得到bundle的响应,还是最后一个扩展功能的bundle只被注意到?如果是后者,symfony中是否有一种方法允许类似链的方法?

我想你对'覆盖'的工作方式感到困惑。当你扩展一个类的时候,你可以通过创建一个同名的方法来"覆盖"基类中的一个方法,但是你实际上并没有以任何方式影响基类,所以多个类可以扩展同一个基类而不相互影响。

在Symfony2中,从多个不同的bundle扩展一个基本控制器是绝对没问题的。在这个基类中定义的任何方法都可以在用于扩展它的类中使用。根据您的需要,您可能还希望研究一下可以定义为允许在应用程序中全局访问方法的服务。