2012-09-27 95 views
4

我需要創建一個類,我們應該有與我的所有控制器共享相同的方法,或者幾乎所有的方法。Yii - 擴展控制器或CController?

所以,我正在尋找擴展控制器,但是,那麼,我注意到Controller Class已經擴展了另一個類CController

我很困惑。

我們應該建立自己的類和延長CController,或延長Controller,或使用Controller類呢?

回答

3

您可以在控制器中編寫您的公共/共享方法,該類僅爲此目的而創建(即您的班級,做任何您想做的事)。無需創建另一個班級。

+0

我相信也是這樣,但在這裏,一位Yii高手並沒有選擇那條路......我想知道爲什麼。 :) http://www.yiiframework.com/forum/index.php/topic/10427-ajax-clientscript/ – MEM

+0

從來沒有面對過這樣的問題。 Yii的成員並不是堅持要創建多層次繼承(他是?),而是簡單地使用他的類。我只是將他的ZController代碼複製到我的** Controller **類中。 – SuVeRa

0

控制器只是一個CController的子類。 在這個類代碼中,定義了用於佈局的$ breadcrumbs,$ layout和menu $變量。 如果您在SiteController中使用CController而不是控制器,則會出現錯誤。

1

它們之間有一點區別;控制器只是CController的子類。

在測試應用程序中,它用於向從Controller派生的所有控制器提供附加變量。例如,它用於爲佈局視圖文件設置$breadcrumbs,$layout和菜單$variables

在項目中擴展YII基類(以'C'符號開頭)是一種很好的做法 - 基類不會被YII框架更新所觸及,代碼將更加脫離耦合。