源文件的放置
把它们放在下面/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 http://www.yiiframework.com/doc/api/1.1/CModule#setImport-detail在您的应用程序实例上调用以注册可以自动加载的类。如果您想扩展这些类,则无需执行任何操作。
如果您的某些组件依赖于未按上述方式导入的 Yii 类,您将需要使用显式导入它们Yiibase::import http://www.yiiframework.com/doc/api/1.1/YiiBase#import-detail在宣布你的班级之前。例如:
Yii::import('zii.widgets.jui.CJuiSlider');
class MySlider extends CJuiSlider {
// class contents here
}
注册路径别名
如果您想为导入路径创建自己的别名(例如,拥有一个路径myapp.components
您可以在导入类时引用),您可以使用Yiibase::setPathOfAlias http://www.yiiframework.com/doc/api/1.1/YiiBase#setPathOfAlias-detail。一个好的地方是配置文件的最顶部:
<?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...
),
);