组件php
Component的或其子类的实例。属性和事件web
组件的属性。(名称大小写不敏感)数据库
可读可写,就像对象的公共成员变量。数组
经过$component->属性名。获取属性值。$component->属性名 = 值 。设置属性值。安全
组件事件(名称大小写不敏感)app
特殊的属性。使用事件句柄 event handlers的方法做为值。框架
组件事件以on开头的命名方式定义。yii
组件行为函数
组件能够绑定多个行为。行为是一个对象,其方法能够经过收集功能的方式来实现集成,多重继承。布局
行为类必须实现IBehavior接口。行为必需要绑定到一个组件,经过attach()绑定。而后经过组件能够调用此方法。
模块
模块是一个独立的软件单元。包含模型,视图,控制器和其余组件,至关于一个小型的应用,位于一个应用里。
大型应用里,咱们把它分为几个模块。每一个模块单独维护和部署。开发模块,能够在之后的项目里复用。
模块目录
模块名xxx文件夹 即ID/
模块类文件xxxModule.php
可复用的用户组件components/
小物件的视图view/
控制器文件contrllers/
第三方扩展extension/
模块类文件models/
视图和布局文件views/
index.php首页视图
具体开发过程当中目录是按实际需求设置的。不必定是这样。
模块类文件继承自CWebModule,必需要有这个继承。
模块目录放在基础目录的modules下。配置时也能够带初始属性值...
访问路由咱们在以前都已写过了,就是模块ID/控制器ID/动做ID,若是控制器在子目录中也能够多写一个文件夹路径。
模块的嵌套
理应上来讲模块能够无限嵌套。 父模块、子模块,子模块必须定义在父模块的modules属性里,就像在应用配置中设定模块同样。路由:parentModuleID/childModuleID/controllerID/actionID。
上次看到模块这,一晃就过去半个月时间,一头扎进项目中,期间感受少些东西不了解,继续把手册干完。
路径别名与名字空间
恩。听起来就以为是命名空间
手册说相似于namespace
用点号语法,RootAlias.path.to.target 。RootAlias是某个目录的别名,经过YiiBase::getPathOfAlias()翻译别名为相应的带杠杠的文件夹路径。
经过YiiBase::setPathOfAlias()能够定义新的根路径别名
预约义:
system:表示Yii框架目录 yii/framework
zii:表示Zii库目录
application:表示应用的基础目录
webroot:表示入口脚本文件所在的目录 (入口脚本:通常是指写有defined DEBUG,require_once框架引导文件那些的index.php)
ext:表示包含第三方扩展的目录
这么说它跟命名空间仍是不同的,能够很方便的导入类Yii::import('system.web.CController');
import方法比include和require更加高效,import导入不会被真正包含,到第一次被引用才会加载。
我也不懂优化,这些能带来多少性能方面的改善
原生php好像没有import这个函数 有的只见了include和require、include_once和require_once,php有好多咱们可能并不知道能用的函数可使用的哦。
Class Map 预先导入,预先导入的类能够在应用的任何地方使用,无需导入或者包含文件。系统内置的类就是使用这样的方法。在CWebApplication::run()执行以前写入Yii::$classMap = array(){ 类名 => 文件路径 }定义。
还能够导入目录,用Yii::import('目录名’); 这样目录下的全部类文件在使用时都会被包含。
YII在命名空间引用上能够说是很灵活了。之后再搞明白点。
开发规范
不知道为何Yii手册开发规范要放到这么后面说
遵循规范能够避免写太多配置。
url规范
默认状况:index.php?r=ControllerID/ActionID
r 为路由,被Yii解析为控制器和动做。
经过CUrlManager建立更加SEO友好的地址。
代码规范
变量、函数、类使用驼峰,首字母大写,变量和函数名第一个单词小写以区分于类
私有类成员如下划线做为名字的开头
在php不支持命名空间时(5.3.0之前版本),避免类名冲突,全部的Yii框架类名以C为前缀
控制器必须以Controller结尾
配置规范
配置使用键值对数组
键表明属性名。值对应初始值
文件
类文件应以它们包含的公有类命名。视图文件应以视图的名字命名。配置文件能够任意命名。
这在开发过程当中好像并无很好的遵照
目录
WebRoot/protected: 这是应用基础目录,是放置全部安全敏感的PHP脚本和数据文件的地方。
WebRoot/protected/runtime:临时文件
WebRoot/protected/extensions:第三方扩展
WebRoot/protected/modules:应用模块,每一个模块一个子目录
WebRoot/protected/controllers:全部控制器文件
WebRoot/protected/views:全部控制器文件
WebRoot/protected/views/layouts:布局文件
WebRoot/protected/views/system:系统视图,用于显示异常和错误的模板
WebRoot/assets:公共资源文件
WebRoot/themes:应用主题
数据库
数据库表名和列名都用小写字母,用下划线分隔单词,表名推荐使用单数。
可使用前缀。