Yii主张配置实现惯例。按照惯例,某人可以创建复杂的Yii应用,无需编写和维护复杂的配置。当然,在需要时几乎每一个方面,Yii仍然可以进行自定义配置。
下面我们描述建议Yii开发的惯例。 为了方便起见,我们假设WebRoot
是Yii应用安装目录。
默认情况下,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。
Yii建议变量,函数和类类型使用骆驼方式命名,就是不用空格连接每个名字的单词。变量和函数名首字母小写,为了区分于类名称(如:$basePath
,runController()
,LinkPager
)。私有类成员变量,建议将他们的名字前缀加下划线字符(例如:$ _actionList
) 。
因为在PHP5.3.0之前不支持命名空间,建议以一些独特的方式命名这些类,以避免和第三方名称冲突。出于这个原因,所有Yii框架类开头的字母"C"。
控制器类名的特别规则是,他们必须附上Controller
后缀 。控制器的ID,然后定义为类名称首字母小写和Controller
结尾。 例如,PageController
类将有ID page
。这条规则使得应用更加安全。这也使得相关的网址控制器更加简洁(例如/index.php?r=page/index
替代/index.php?r=PageController/index
) 。
配置是数组关键值对。每个键代表对象名称属性的配置,每个值相应属性的初始值。举个例子,array('name'=>'My application', 'basePath'=>'./protected')
初始 name
和basePath
属性为其相应的数组值。
一个对象任何写入属性可以配置。如果没有配置,属性将使用它们的默认值。当设定属性,应该阅读相应的文件,以便使初始值设定正确。
文件命名和使用惯例取决于其类型。
类文件应命名应使用包含的公共类名字。例如,CController 类是在CController.php
文件。公共类是一个可用于任何其他类的类。每个类文件应包含最多一个公共类。私有类(类只能用于一个单一的公共类)可能和公有类存放在同一个文件。
视图文件应使用视图名称命名。例如,index
视图在index.php文件里。视图文件是一个PHP脚本文件包含HTML和PHP代码,主要用来显示的。
配置文件可任意命名。配置文件是一个PHP脚本的唯一宗旨就是要返回一个关联数组代表配置。
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定制。
Signup or Login in order to comment.