我想延長一些內置的框架類的文件,但我有幾點我並不清楚:如何延長Yii框架類和在哪裏放置
- 我想我應該把我的組件文件夾下的課程,這是正確的地方?
- 我應該如何命名類似
Subfolder_ClassName
以及像ClassName.php
這樣的文件? - 我該如何繼承?默認包含路徑不包括框架本身。我假設沒有我改變包含路徑/開始使用自動載入功能或者在我的代碼中簡單地硬編碼包含,就有內置的方法來做到這一點。
對不對?
我想延長一些內置的框架類的文件,但我有幾點我並不清楚:如何延長Yii框架類和在哪裏放置
Subfolder_ClassName
以及像ClassName.php
這樣的文件?對不對?
的放置源文件
/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...
),
);
如果你想在yii-Framework中創建一個類的子類,是的,你可以將你的類定義文件放在project/protected/components
之內。取決於你想要的最佳實踐(即你將創建幾十個自定義類,而不是擴展FW類的一個或兩個),但將文件直接放在組件中應該沒問題。
要繼承你可以沿着這些路線創建文件:
class MyNewClass extends CFrameworkClass
{
//All your stuff
}
注意,按照約定的警予framwork類有「C」在他們面前(即CController),我不加入「C」在那裏(CFramwork ..)除了遵守公約之外的任何其他原因。
所以,我創建了一個子文件夾下的組件,並試圖只是,系統無法找到父類(籽億/部件/ CMenu的) –