推荐yii2的类参考手册 https://www.yiichina.com/doc/api/2.0
推荐yii2的权威指南 https://www.yiiframework.com/doc/guide/2.0/zh-cn
控制器:
从实例一个web应用开始
//yii1.1写法
Yii::createWebApplication($config)->run();
//yii2写法
(new yii\web\Application($config))->run();
实例一个console应用开始(需重写脚本入口文件,引入配置(根据yii2根目录下yii文件))
//yii1.1写法
Yii::createConsoleApplication($config)->run();
//yii2写法
(new yii\console\Application($config))->run();
另外脚本文件后缀不再是command 而用controller替换,执行函数index替换run
可直接执行脚本中任何一个方法, 执行方法 : yii(重写脚本入口文件需替换可能需要加上执行命令php) 脚本/方法(不加默认index)
参数若不指定可为空则不接受空值参数,可不接入参数
yii框架引用实例不再使用app() 而用全局变量$app取缔
路径别名函数变化:
setPathOfAlias —> setAlias
getPathOfAlias —> getAlias
控制器中不建议使用__construct构造函数,用init()代替,若非要用请继承父类,(父类做了一些加载yii初始操作)
过滤器不再是filter,而是用behaviors,需引用yii\filters\AccessContro;
使用参考 https://blog.csdn.net/zhyoulun/article/details/51499227
在Yii1.1中,字段的默认值可以通过为类的public 成员变量赋初始值来指定。 而在Yii2.0中,这样的方式是行不通的,必须通过重载 init() 成员函数的方式实现了。
log:
自带log,但是我为了和以前的log格式相同没有用yii2自带的
自动加载 :
yii2中引入了命名空间所以yii1.1中的别名加载(按路径加载)的方式就淘汰了,配置文件中 'import' 字段要删除
配置中'id'字段不可缺
basePath为yii框架app命名空间根目录,可以利用路径别名新定义命名空间,
yii2有三种加载方式,这里主要讲第一种内部自动加载(yii自身加载会引入classes.php)
原则:命名空间命名符合路径,每个命名空间下单一类
加载是会将命名空间前面加上 ‘@’,再去找别名查找起相应路径,所以务必保证命名空间与路径一致,默认 ‘@app’ 为配置中basePath路径
配置文件:
各个数据库中 ‘connectionString’字段换成'dsn' yii框架自带memcached usename、password字段需要提到与class字段同级,
(其他nosql需要安装,建议composer)
cookie:
'cookieValidationKey' => true,或者任意字符串
url管理:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules'=>[
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
],
],
用户管理
'user' => [
'class' => 'yii\web\User',
'identityClass' => 'app\models\service\User',
'enableAutoLogin' => true,
// 'loginUrl' => ['user/login'],
],
数据库
重头戏 若升级而来需要大面积重写 (有yii1.1与yii2共存的方案,可以自行查阅资料)
- 在Yii1.1中,数据库查询被分散成 CDbCommand ,CDbCriteria 和CDbCommandBuilder 。 所谓天下大势分久必合,到了Yii2.0,采用 yii\db\Query 来表示数据库查询:
- Yii1.1中的 CDbCriteria 在Yii2.0中被 yii\db\ActiveQuery 所取代, 这个把前辈拍死在沙滩上的家伙,继承自 yii\db\Query ,所以可以进行类似上面代码的查询。
- Yii1.1使用一个JOIN查询, 来实现同时查询主记录及其关联的记录。 而Yii2.0弃用JOIN查询的方式,而使用两个顺序的SQL语句, 第一个语句查询主记录,第二个语句根据第一个语句的返回结果进行过滤。
- Yii2.0为Active Record引入了 asArray() 方法。在返回大量记录时,可以以数组形式保存, 而不再以对象形式保存,这样可以节约大量的空间,提高效率。
使用方法不详尽述 AR方法参考https://www.cnblogs.com/gy1010/p/6178520.html
对了dao层 的基层要重写
yii2 还引入乐观锁、悲观锁 详情见https://www.kancloud.cn/kancloud/yii-in-depth/50777
暂时就这么多了~ 若有错误欢迎指正~