我想延长一些内置的框架类的文件,但我有几点我并不清楚:如何延长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的) –