“路径别名”则是用来引用类文件或者目录的。
所以路径别名和名称空间并不冲突,即使他们写法上类似。
【注意!】因为PHP 5.3.0以前的版本并不支持名称空间,所以并不能创建两个有着同样名称但是不同定义的类的实例。为此,所有Yii框架的系统类都以字母“C”(代
表“Class”)为前缀,以避免与用户自定义类冲突。我们推荐为Yii框架保留“C”字母前缀的唯一使用权,用户自定义类则可以使用其他字母作为前缀,以保持整体代码的
一致性和稳定性。
3.10 约定俗成 / Conventions
Yii主张开发过程中遵守约定俗成的惯例,这样的好处是可以通过Yii开发复杂的应用程序而不需要重新制定和维护复杂的配置文件。
这些约定俗成的惯例并不是必要的,事实上Yii绝大多数单元部件的特性,都可以通过手动配置来修改之。
但是遵守惯例最少能带来以下几点优势:
便于团队协作,让其他团队成员更容易看懂和维护您的代码;1.
在升级Yii框架版本的过程中,更便于实现平滑过渡;2.
更容易实现代码块的迁移和重用。3.
那么Yii中有哪些常用的惯例呢?
3.10.1 URL惯例
默认情况下,Yii能识别如下的URL格式:
http://hostname/index.php?r=ControllerID/ActionID
Yii解释GET方法请求中的变量r的值,然后路由到相应的控制器和动作中。
如果“ActionID”没有指定,那么默认动作就会被激活,按照惯例,Yii中默认的动作是“CController::defaultAction”;
类似地如果“ControllerID”没有指定,那么默认控制器就会被激活,按照惯例,Yii中默认的控制器是“CWebApplication::defaultController”。
当然,可以修改“CUrlManager”中的配置,以实现更复杂的和个性化的URL路由特性。
3.10.2 代码惯例
Yii推荐在命名变量、函数和类的时候使用驼峰式(Camel Case)风格,且必须遵守以下规则:
变量和函数名称的首字母小写;1.
类名称首字母大写,2.
后续的字符中每个单词的首字母大写;3.
私有类成员变量添加下划线前缀;4.
为避免Yii框架的类和用户自定义类发生冲突,所有Yii框架类都以“C”(大写字母C)作为前缀,用户自定义类应避免使用“C”作为前缀。5.
控制器类名的特别规则是,他们必须附上“Controller”后缀,如“ExampleController”,同时相应地该类的ID将自动识别为“example”(类ID的首字母将自动识
别为小写字母),此规则使代码更安全,也使URL更简洁(可用“/index.php?r=example/index”替代较繁琐的“/index.php?r=ExampleController
/index”)。
6.
如:
1 $iAmAVar // 普通变量
2 iAmAFunction() // 普通函数
3 IAmAClass // 普通类
4 CIAmAClassFromYii // Yii框架类
5 $_iAmAPrivateVar // 私有类成员变量
6 ExampleController // 控制器类(其ID自动识别为"example")
3.10.3 配置惯例
配置应为数组关键值对,每个键代表对象名称属性的配置,每个值代表相应属性的初始值,如:
1 array(
2 'nameA'=>'valueA',
3 'nameB'=>'valueA'
4 )
3.10.4 文件命名惯例
文件命名的管理会根据文件的类型不同而有所差异。
公有类的类文件需要根据其包含的公有类(Public Class,即可被其他任何类使用的类)来命名,如:“CController”类应该保存在“CController.php”文件内;
私有类(Private Class,仅能被唯一公有类使用的类)应该保存在其依附的公有类的类文件内;
视图文件需要根据其包含的视图名称来命名,如:“index”视图应该保存在“index.php”文件内;
配置(Configuration)文件的命名相对比较自由,您可以根据自己的喜好来对其命名。
3.10.5 文件系统惯例
WebRoot/protected:此文件夹包含所有程序文件和资源文件,因此,出于安全理由,应该限制用户通过Web服务器直接访问这个文件夹以及其所有子文件夹;
WebRoot/protected/runtime:这个文件夹包含所有运行时创建的临时文件,这个文件夹必须给予Web服务器进程以可写入的权限,这个文件夹的路径可通过
“CApplication::runtimePath”配置;
WebRoot/protected/extensions:此文件夹包含所有的第三方扩展,可通过“CApplication::extensionPath”配置;
WebRoot/protected/modules:此文件夹包含所有的模块,每个模块占用一个独立的子文件夹;
WebRoot/protected/controllers: 此文件夹包含所有的控制器文件,可通过“CWebApplication::controllerPath”配置;
WebRoot/protected/views:此文件夹包含所有的视图文件,包括视图文件、布局文件以及系统视图文件,可通过“CWebApplication::viewPath”配置;
WebRoot/protected/views/ControllerID:此文件夹包含某一ID为ControllerID的控制器的视图文件,可通过“CController::viewPath”配置;
WebRoot/protected/views/layouts:此文件夹包含所有的布局文件,可通过“CWebApplication::layoutPath”配置;