2011-09-17 61 views
4

我想延長一些內置的框架類的文件,但我有幾點我並不清楚:如何延長Yii框架類和在哪裏放置

  1. 我想我應該把我的組件文件夾下的課程,這是正確的地方?
  2. 我應該如何命名類似Subfolder_ClassName以及像ClassName.php這樣的文件?
  3. 我該如何繼承?默認包含路徑不包括框架本身。我假設沒有我改變包含路徑/開始使用自動載入功能或者在我的代碼中簡單地硬編碼包含,就有內置的方法來做到這一點。

對不對?

回答

5

的放置源文件

/protected/components下把他們來說是很自然的選擇。如果您以後開發了更多可以跨項目重用的泛型類,則可以考慮將它們放入單獨的目錄中。

命名和目錄結構

這將取決於你的應用規模。如果你沒有很多組件(比如說20以下),那麼恕我直言,你不需要任何目錄結構,components目錄適合所有的組件。另一種實用方法是將您的業務組件放到一個目錄中,並將您的HTML組件放入另一個目錄中(例如widgets)。

包括父類

您的配置文件應該有一個這樣的部分:被稱爲在你的應用程序實例

// autoloading model and component classes 
'import'=>array(
    'application.models.activerecord.*', 
    'application.models.forms.*', 
    'application.components.*', 
    'application.classes.*', 
    // etc 
), 

這部分實際上導致CModule::setImport註冊能夠自動載入類。如果你想擴展這些類,那麼你不需要做任何事情。

如果您的某些組件依賴於未按上述方式導入的Yii類,則需要在聲明您的類之前使用Yiibase::import明確地導入它們。例如:

Yii::import('zii.widgets.jui.CJuiSlider'); 

class MySlider extends CJuiSlider { 
    // class contents here 
} 

註冊的路徑

如果你想創建自己的進口路徑別名(例如,有一個路徑myapp.components導入類時,你可以參考)的別名,你可以這樣做使用Yiibase::setPathOfAlias。這方面的一個好地方,是你的配置文件的頂部:

<?php 
Yii::setPathOfAlias('myapp.components','components/my/'); 

// This is the main Web application configuration. Any writable 
// CWebApplication properties can be configured here. 
return array(
    // your whole app configuration is here, and you can now do this: 
    'import'=>array(
     // ...other imports... 
     'myapp.components.*', 
     // ...other imports... 
    ), 
); 
0

如果你想在yii-Framework中創建一個類的子類,是的,你可以將你的類定義文件放在project/protected/components之內。取決於你想要的最佳實踐(即你將創建幾十個自定義類,而不是擴展FW類的一個或兩個),但將文件直接放在組件中應該沒問題。

要繼承你可以沿着這些路線創建文件:

class MyNewClass extends CFrameworkClass 
{ 
    //All your stuff 

} 

注意,按照約定的警予framwork類有「C」在他們面前(即CController),我不加入「C」在那裏(CFramwork ..)除了遵守公約之外的任何其他原因。

+0

所以,我創建了一個子文件夾下的組件,並試圖只是,系統無法找到父類(籽億/部件/ CMenu的) –