用户
 找回密码
 入住 CI 中国社区
搜索
查看: 5690|回复: 5
收起左侧

[Others] [分享] Upgrading to CodeIgniter 2.0 (升級 CI 到 2.0 版本)

[复制链接]
发表于 2010-11-1 21:01:54 | 显示全部楼层 |阅读模式
本帖最后由 appleboy 于 2010-11-1 21:03 编辑

部落格: http://blog.wu-boy.com/2010/10/30/2452/
論壇: http://ci.wuboy.twbbs.org/forum/viewtopic.php?f=6&t=2718

在國外文章看到 Phil Sturgeon 已在今年三月發佈了一篇如何將目前 CodeIgniter 版本升級到 2.0 開發版本,轉移的經驗會在底下做介紹,PyroCMS 是該作者產品之一,也升級到 2.0 了,大家可以參考看看。


1. 取得最新開發版

從 BitBucket 下載 最新版本。

2. 資料夾架構改變

CodeIgniter 2.0 資料夾架構有些改變,原本 application 放在 system 目錄裡面,現在要將 application 移動到上一層,也就是會跟 system 目錄同一層:

CI 1.7.2 之前:
  1. system/application
  2. system/
  3. index.php
复制代码
CI 2.0 目前
  1. system/
  2. application/
  3. index.php
复制代码
刪除 system 目錄,之後將 2.0 的 system 取代,並且複製底下檔案到您的根目錄
  1. index.php
  2. application/config/foreign_chars.php
  3. application/config/profiler.php
复制代码
3. 修改 models 目錄所有檔案

原先 CodeIgniter Models 必須遵照底下的格式撰寫
  1. class Blog_model extends Model
复制代码
CodeIgniter 2.0 將會改成
  1. class Blog_model extends CI_Model
复制代码
也不需要問為什麼要改成這樣,改就對了 ^^。

4. 轉換 Plugin 到 helper

大家有看過之前發表的一篇:『CodeIgniter 2.0 的發展以及特性改變』2.0 將會廢除 Plugin,所以必須將自己撰寫的 plugin 通通移動到 application/helpers 目錄,並且將所有檔名全部從 whatever_pi.php 轉換 whatever_helper.php 。
請打開 application/config/autoload.php,將 $autoload['plugins'] 資料轉到$autoload['helpers'],這樣大致就可以了。

5. 取代舊有的驗證

您可以透過底下方法解決:
  • 改用新的表單驗證 (參考線上文件)
  • 抓舊的 Validation.php,將其放入到 application/libraries/ 目錄


6. MY_Controller 和其他一些 extended libs

CI 2.0 將建立 system/core 目錄,並且將 libraries 跟核心檔案全部放入到此目錄(像是 Router, Loader and Controller),以前原本放在 system/libraries 一些檔案(像是 Input, Lang, Output…等)也會移動到 core 裡面,所以假如您之前開發的 extend library,必須將其檔案移動到 /application/core/ 目錄。

7. CI_Language 重新命名

Language clas 原先是在 system/libraries/Language.php,現在轉移到 system/core/Lang.php,並且將 CI_Language 名稱換成 CI_Lang,如果您有用到此 class 請務必轉換名稱

8. 正式移除一些 DB method

在 1.6.x DB 一些舊有的 method orwhere, orlike, groupby, orhaving, orderby and getwhere,在 1.7.2 版本還是有保留,但是在 2.0 完全被移除了,如果您的專案裡面有這些寫法,請麻煩修正

9. 關閉 query strings

個人認為既然使用了 CI,就不要將此功能打開,在 2.0 打開 $config['enable_query_strings'],您的 url 產生成 http://example.php/index.php?/controller 或 http://example.php/?/controller,所以必須將 enable_query_strings 改成 false,但是您想要用 $_GET 的話,可以在 Controller 或 hook 加入底下程式
  1. parse_str($_SERVER['QUERY_STRING'], $_GET);
复制代码
參考:
Upgrading to CodeIgniter 2.0
发表于 2010-12-6 10:14:46 | 显示全部楼层
支持,希望早日用上CI2
发表于 2010-12-14 21:13:56 | 显示全部楼层
希望性能有所提升
发表于 2010-12-22 09:58:17 | 显示全部楼层
老是看到CI2.0,到底CI2.0是什么,官方也没提供该下载,CI2.0去哪里下载。是稳定版本了,还是什么情况。。。
发表于 2010-12-23 00:29:54 | 显示全部楼层
回复 4# trisn


    还没有发布,目前都是前瞻性的东西,不感兴趣可略过。
发表于 2012-5-4 22:37:04 | 显示全部楼层
受用,问题解决!

本版积分规则