yii1.1升级yii2总结体会

1 篇文章 0 订阅

推荐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

暂时就这么多了~ 若有错误欢迎指正~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值