就像在Codeigniter中一样,我们有'core'文件夹,我们可以在其中定义我们的自己的控制器就像'MY_Controller',可以用来扩展所有的类来扩展这个控制器,在Symfony2中是否有可能这样做?
在symfony中,我想创建类'MY_Controller',它从基类'Controller'扩展,我希望控制器中的所有类从MY_Controller'类扩展。
备注:
当使用Symfony2时,强烈建议您遵循Symfony2编码风格。它与PHP-FIG基本相同,只是有一两个偏差。所以下划线是类名中的禁忌。除此之外:Symfony非常容易使用,并且完全面向对象,因此更改控制器扩展的类就像将extends Controller
替换为extends AnotherClass
一样简单。
但是现在,symfony2-使用自定义控制器的方式:
你可以做的,是创建一个Core
包(CoreBundle以后)。然后,在这个CoreBundle中,定义一个控制器,从Symfony Controller
组件扩展。从命令行,在项目根目录下,使用以下命令:
php app/console generate:bundle --namespace=YourNameSpace/CoreBundle --bundle-name=YourNameSpaceCoreBundle
更多选项可以在这里找到
之后,您将在包目录中找到一个DefaultController
类。(可能在文件夹src/YourNamespace/CoreBundle/Controller
中)。然后,开始生成Core控制器:
php app/console generate:controller --controller=YourNameSpaceCoreBundle:Core
有关如何生成核心控制器的更多选项,请参阅文档。
当你完成了自定义控制器的设置后,你可以在任何其他bundle中随意使用它:
namespace YourNameSpace'AnotherBundle'Controller;
use YourNameSpace'CoreBundle'Controller'CoreController;
class DefaultController extends CoreController
{//extends from your custom controller
}
- 首先,不要像PSR-0那样使用下划线来命名类,当在类名中使用时,每个下划线字符都会转换为目录分隔符。第二,将控制器设置为
<bundledir>/Controller/
第三,将你的控制器命名为BaseController,并从它扩展所有其他控制器。第四,考虑在基本控制器中使用依赖注入而不是耦合功能。