2017年9月

在原有的 Yii1.1 项目中使用 Yii2 框架的经验记录

目前公司由于历史原因,之前很多主体项目都是使用 Yii1.1 开发的,Yii1.1 在使用上还是有很多不便,为了使用 Yii2 的一些新特性,我决定在一个规模比较小的项目上尝试 Yii1.1 和 Yii2 共存并逐渐使用 Yii2 替代原有 Yii1.1 代码进行项目升级的方案。

主要的参考文档在 google 上搜了下就只有官方文档的一节 Using Yii 2 with Yii 1

最主要的是创建一个自定义的 Yii 类文件,这个类继承自 Yii2 的 BaseYii 类,而类里面需要手工把 Yii1.1 的 YiiBase 类中的代码复制过来,这样这个类就同时拥有 Yii1.1 和 Yii2 的属性和方法了。
然后最下面三行是为了能在项目中使用 Yii2 的自动加载机制和依赖注入容器,一定不能写错。

$yii2path = '/path/to/yii2';
require($yii2path . '/BaseYii.php'); // Yii 2.x

$yii1path = '/path/to/yii1';
require($yii1path . '/YiiBase.php'); // Yii 1.x

class Yii extends \yii\BaseYii
{
    // 这里要把 Yii1.1 中 YiiBase 类里的代码全部复制过来
}

Yii::$classMap = include($yii2path . '/classes.php');
// 通过 Yii1.1 的方法注册 Yii2 的自动加载器
Yii::registerAutoloader(['yii\BaseYii', 'autoload']);
// 创建依赖注入容器
Yii::$container = new yii\di\Container();

这个文件我们可以放在 components\Yii.php,然后我们就需要修改项目原先的 index.php 入口文件了,修改过后的关键代码如下:

// 引入上一步创建好的自定义 Yii 类文件
require(__DIR__ . '/../components/Yii.php');

// 首先读取 Yii2 的配置,实际配置可能更多,这里只是参考
$yii2Config = require(__DIR__ . '/../config/yii2/web.php');
// 不要调用 run() 方法,Yii2 只作为服务定位器使用
new yii\web\Application($yii2Config);

// 读取 Yii1.1 配置,实例化 Application 并运行
$yii1Config = require(__DIR__ . '/../config/yii1/main.php');
Yii::createWebApplication($yii1Config)->run();

配好这些就可以开始使用了,项目的目录组织的话可以根据实际项目情况而定,在编写 Yii2 代码时,我们可以无视原来的 Yii1.1 的所有代码,将项目作为一个常规的 Yii2 项目来看,这样的话目录结构就很清晰了。

这种方案要求 php 版本至少在 5.4 以上,我建议将 Yii1.1 的框架版本升级到最新的 1.1.19 这个版本可以支持 php7.0 和 php7.1。

总的来说并不困难,不过参考资料较少,实际使用过程中可能会遇到坑点,不过也都比较好解决,老项目这样一配可以说是枯木逢春,写起新功能来要舒服太多了。

上海办理护照和港澳通行证记录

本来今年十一同事有日本游的计划,无耐旺季机票太贵只得作罢,不过因为之前一直没有办护照想着以后说不定用到所以还是先把护照给办了。

参考攻略:https://zhihu.com/question/21517942/answer/126703774

首先在上海市出入境管理局电子政务平台进行网上预约,这个网站只能用 IE 进行操作,其他浏览器都可能存在兼容性问题,而且十分卡,有的时候点完要多等一会。

预约完后就是在预约时间去办理点了,我是在张江的点办理的,不同地方可能稍有不同。张江这边周末办理的人不是很多,等不了多会就能办,有些点貌似周末人就超多。

过去的时候只要带上身份证和居住证即可,到了之后先去自助机器上打印申请登记表,然后就可以去采集照片、复印证件了。

需要注意的是,去窗口办理之前先在采集照片的地方拍好照片,还有先把身份证和居住证复印好,以及取好现金,有些地方不能刷卡只收现金,还有就是如果要快递办好的证件的话也要先买好快递。复印室、ATM机和照片采集室一般在一起,还是比较方便的,我办的时候因为直接先去的窗口,所以来回跑了几次,搞的有点麻烦。

上面说的都准备好之后就可以去拿号去窗口办理了,也是几分钟就能办好,总计费用大概两百多,交完费拿到回执单就结束了,可以等证件快递到手了。

上海拍牌相关记录

上海的牌照现在是越来越贵也越来越难排了,上个月社保和个税都满3年这个条件了我就开始申请标书准备加入拍牌大军了。

购买标书指南参见 http://51hupai.org/help/buy-ticket,发现个人排标书的话,51沪牌这个网站还蛮有用。

整个流程还是比较方便的,不过自己买标书的过程中也遇到了一些需要注意的地方。一个是最好要先网上预约,不预约的话如果周末去办理点排队之前可能就被劝退了,还有就是居住证卡面也一定要在有效期,我就是今年自动签注了一年没有更新有效期,结果周末去排队之前就被工作人员劝退了。

后来更新居住证卡面有效期发现还挺便利的,一些居住证的办理点8点半就上班了(其实稍早一点的时候就开始办公了),早点过去两三分钟就能好,办完去上班如果公司近都不会迟到。

然后为了不排长队,我就工作日上午请假过去的,去的早基本一去就能办,也是填些资料几分钟就可以拿到标书了,如果是社保满三年的话,只要带上身份证、居住证、驾驶证就行,标书钱可以现金也可以刷卡,信用卡也可以,很方便。