0 follower

Conventions(惯例)

Yii主张配置实现惯例。按照惯例,某人可以创建复杂的Yii应用,无需编写和维护复杂的配置。当然,在需要时几乎每一个方面,Yii仍然可以进行自定义配置。

下面我们描述建议Yii开发的惯例。 为了方便起见,我们假设WebRoot是Yii应用安装目录。

1. 网址(URL)

默认情况下,Yii确认的网址,格式如下:

http://hostname/index.php?r=ControllerID/ActionID

r GET变量指route ,可以通过Yii解析为控制器和动作。如果ActionID省略,控制器将采用默认的动作(通过CController::defaultAction指定);如果ControllerID也省略(或r变量也没有) ,该应用程序将使用默认的控制器(通过CWebApplication::defaultController定义) 。

CUrlManager的帮助下,有可能生成和识别更多的搜索引擎优化友好的URL ,如http://hostname/ControllerID/ActionID.html。此功能详细情况在URL Management

2. 代码(Code)

Yii建议变量,函数和类类型使用骆驼方式命名,就是不用空格连接每个名字的单词。变量和函数名首字母小写,为了区分于类名称(如:$basePathrunController()LinkPager)。私有类成员变量,建议将他们的名字前缀加下划线字符(例如:$ _actionList) 。

因为在PHP5.3.0之前不支持命名空间,建议以一些独特的方式命名这些类,以避免和第三方名称冲突。出于这个原因,所有Yii框架类开头的字母"C"。

控制器类名的特别规则是,他们必须附上Controller后缀 。控制器的ID,然后定义为类名称首字母小写和Controller结尾。 例如,PageController类将有ID page 。这条规则使得应用更加安全。这也使得相关的网址控制器更加简洁(例如/index.php?r=page/index替代/index.php?r=PageController/index) 。

3. 配置(Configuration)

配置是数组关键值对。每个键代表对象名称属性的配置,每个值相应属性的初始值。举个例子,array('name'=>'My application', 'basePath'=>'./protected')初始 namebasePath 属性为其相应的数组值。

一个对象任何写入属性可以配置。如果没有配置,属性将使用它们的默认值。当设定属性,应该阅读相应的文件,以便使初始值设定正确。

4. 文件(File)

文件命名和使用惯例取决于其类型。

类文件应命名应使用包含的公共类名字。例如,CController 类是在CController.php 文件。公共类是一个可用于任何其他类的类。每个类文件应包含最多一个公共类。私有类(类只能用于一个单一的公共类)可能和公有类存放在同一个文件。

视图文件应使用视图名称命名。例如,index视图在index.php文件里。视图文件是一个PHP脚本文件包含HTML和PHP代码,主要用来显示的。

配置文件可任意命名。配置文件是一个PHP脚本的唯一宗旨就是要返回一个关联数组代表配置。

5. 目录(Directory)

Yii假定默认设置的目录用于各种目的。如果需要的话,他们每个可自定义。

  • WebRoot/protected: 这是application base directory 包括所有安全敏感的PHP脚本和数据文件。Yii有一个默认的别名为application代表此路径。这个目录和下面的一切文件目录,将得到保护不被网络用户访问。它可通过CWebApplication::basePath自定义。

  • WebRoot/protected/runtime: 此目录拥有应用程序在运行时生成的私有临时文件。这个目录必须可被Web服务器进程写。它可通过CApplication::runtimePath定制。

  • WebRoot/protected/extensions: 此目录拥有所有第三方扩展。它可通过CApplication::extensionPath定制。

  • WebRoot/protected/modules: 此目录拥有所有应用modules,每个代表作为一个子目录。

  • WebRoot/protected/controllers: 此目录拥有所有控制器类文件。它可通过CWebApplication::controllerPath定制。

  • WebRoot/protected/views:此目录包括所有的视图文件,包括控制视图,布局视图和系统视图。可通过CWebApplication::viewPath定制。

  • WebRoot/protected/views/ControllerID: 此目录包括某个控制类的视图文件。这里 ControllerID 代表控制类的ID。可通过CController::getViewPath定制。

  • WebRoot/protected/views/layouts: 此目录包括所有的布局视图文件。可通过CWebApplication::layoutPath来定制。

  • WebRoot/protected/views/system: 此目录包括所有的系统视图文件。系统视图文件是显示错误和例外的模板。可通过CWebApplication::systemViewPath定制。

  • WebRoot/assets: 此目录包括发布的asset文件。一个asset文件是一个私有文件,可能被发布来被Web用户访问。此目录必须Web服务进程可写。可通过CAssetManager::basePath定制。

  • WebRoot/themes: 此目录包括各种适用于应用程序的主题。每个子目录代表一个主题,名字为子目录名字。可通过CThemeManager::basePath定制。