我需要创建一个类,我们应该在所有控制器上共享相同的方法,或者几乎所有控制器共享相同的方法。
所以,我一直在寻找扩展控制器,但是,我注意到Controller Class
已经扩展了另一个类CController
。
我很困惑。
我们是否应该创建自己的类并扩展 CController
,或扩展 Controller
或 USE {{ 1}}类无论如何?
答案 0 :(得分:3)
您可以在控制器中编写您的公共/共享方法,此类仅为此目的而创建(这是您的类,无论您想做什么)。无需创建另一个类。
答案 1 :(得分:1)
他们之间有一点差别;控制器只是CController
的子类。
在测试应用程序中,它用于向从Controller派生的所有控制器中提供其他变量。例如,它用于为布局视图文件设置$breadcrumbs
,$layout
和菜单$variables
。
在项目中扩展YII
基类(以'C'符号开头)是一个很好的做法 - YII
框架更新不会触及基类,代码会更加分离。
答案 2 :(得分:0)
Controller只是CController的子类。 在这个类代码中为$ layoutcrumbs,$ layout和menu $变量定义了布局。 如果您在SiteController中使用CController而不是控制器,那么您将收到错误。