我需要創建一個類,我們應該有與我的所有控制器共享相同的方法,或者幾乎所有的方法。Yii - 擴展控制器或CController?
所以,我正在尋找擴展控制器,但是,那麼,我注意到Controller Class
已經擴展了另一個類CController
。
我很困惑。
我們應該建立自己的類和延長CController
,或延長Controller
,或使用Controller
類呢?
我需要創建一個類,我們應該有與我的所有控制器共享相同的方法,或者幾乎所有的方法。Yii - 擴展控制器或CController?
所以,我正在尋找擴展控制器,但是,那麼,我注意到Controller Class
已經擴展了另一個類CController
。
我很困惑。
我們應該建立自己的類和延長CController
,或延長Controller
,或使用Controller
類呢?
您可以在控制器中編寫您的公共/共享方法,該類僅爲此目的而創建(即您的班級,做任何您想做的事)。無需創建另一個班級。
控制器只是一個CController的子類。 在這個類代碼中,定義了用於佈局的$ breadcrumbs,$ layout和menu $變量。 如果您在SiteController中使用CController而不是控制器,則會出現錯誤。
它們之間有一點區別;控制器只是CController
的子類。
在測試應用程序中,它用於向從Controller派生的所有控制器提供附加變量。例如,它用於爲佈局視圖文件設置$breadcrumbs
,$layout
和菜單$variables
。
在項目中擴展YII
基類(以'C'符號開頭)是一種很好的做法 - 基類不會被YII
框架更新所觸及,代碼將更加脫離耦合。
我相信也是這樣,但在這裏,一位Yii高手並沒有選擇那條路......我想知道爲什麼。 :) http://www.yiiframework.com/forum/index.php/topic/10427-ajax-clientscript/ – MEM
從來沒有面對過這樣的問題。 Yii的成員並不是堅持要創建多層次繼承(他是?),而是簡單地使用他的類。我只是將他的ZController代碼複製到我的** Controller **類中。 – SuVeRa