|
本帖最后由 yunnysunny 于 2012-6-7 12:28 编辑
直接从1.7.3升级到2.1.0是没有文档参考的,可以参考的只能是从1.7.3升级到2.0.0(地址http://codeigniter.org.cn/user_guide/installation/upgrade_200.html),感觉官方给出的文档不是很全面,讲了很多函数的改动,有必要列出来,但是可能对于大多数用户来说这些都用不到。我们还是捞干的说吧:
- 首先将 system 文件夹下的除了 application 文件夹外所有文件替换掉。
- 其实 index.php 也是需要替换掉的,文档上没有提及。
接着就是 application 文件夹下的代码改动了。
CI 2.x 将核心的 Model 和 Controller 类名改掉了(感觉这个改动很鸡肋),对于开发者来说,改动起来比较被动,幸好我们有比较得心应手的工具,ultraedit、dreamweaver 等工具都可以实现批量替换。
以 ultraedit 为例讲一下怎样批量替换。
打开 urltraedit,选择菜单“搜索”->“在文件中搜索”,在打开的对话框中输入“查找什么”:extends\s+(C|c)ontroller,在“替换为”中输入:extends CI_Controller,选择文件类型为 *.php,选择目录为 application 文件夹所在目录(比如说我的目录是E:\xampp\htdocs\qloa\system\),由于我们的搜索条件使用了正则表达式,所以勾选“正则表达式:perl”,并且选择“正则表达式引擎”为 perl,最后点击按钮“全部替换”即可。
总结起来要替换的内容:
- extends\s+(C|c)ontroller替换为extends CI_Controller,extends\s+(M|m)odel替换为extends CI_Model。
- 替换为
- 替换为
- orwhere, orlike, groupby, orhaving, orderby, getwhere 这些函数应经被改名了,函数名的单词和单词之间用下划线分割开,比如 orderby 替换成 order_by。
最后是 application 下的文件变动: - 如果你的系统中有替换系统核心类库的代码,在1.7.x中是放在 application 下的 libraries 中的,现在在 2.x 中要放在application 下的 core 文件夹中,否则会提示找不到文件。注意是系统核心类库,比如说我们通常自己生成一个继承自CI_Controller的MY_Controller来增强一下控制器的访问控制功能。普通的类库任然要放在libraries目录下。
- kndb session类在2.1是不起作用,把kndb session的类文件Session.php拷贝到core文件夹下,但是任然加载的是系统自带的session类库,考虑到系统自带类库bug问题已经解决,最终弃用kndb session。使用系统自带session,如果启用数据库支持,并且配置了检查user_agent之后,如果你没有修改数据库中session记录表中user_agent 字段的长度的话,session是不会记录成功的。CI 1.x中这个字段长度是50,CI2.x中已经修正为120。参见http://codeigniter.org.cn/user_guide/libraries/sessions.html中的【将session写入数据库】小节。chrome浏览器的user agent属性在100个字符作用,如果使用原来的user agent字段长度的话,会导致你的登录等操作失败。
- 在 application 中新增 cache、logs、core、third_party 文件夹,其中 cache 和 logs 原来位于 system 文件夹中,在 system 文件夹中这两个文件夹可以删除掉。更新 errors 这个文件夹。
- plugins 文件夹的文件要移动到 library 中,具体方法看开头提到的文档链接,由于我没有使用 plugins 所以就不多说了。
|
评分
-
查看全部评分
|