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

从 1.7.3 升级到 2.0.0的详解

[复制链接]
发表于 2011-2-11 22:47:49 | 显示全部楼层 |阅读模式
从 1.7.3 升级到 2.0.0
--加入了自己升级过程中的错误和解决办法

在进行升级之前,你应该先通过替换 index.php 为静态页面的方式来使你的网站变为脱机状态。

第 1 步: 升级你的 CodeIgniter 文件

替换你的“system”目录下的所有文件,除了你的application目录。

说明:如果你在这些目录下有自己编写的文件,你应该先备份它们。

第 2 步:在必要的地方调整get_dir_file_info()函数

出于兼容性的考虑,2.0.0版将get_dir_file_info()函数改为无返回值,这个在文件辅助函数中。在CodeIgniter中,出于兼容性而使用无返回值的改变是极其稀少的,但这次我们感觉是正确的,因为它使得创建安全的服务器运行输出变得简单。如果你需要 同时输出子目录及其以下目录的文件信息,请更改调用,设置第二个参数$top_level_only为FALSE:

get_dir_file_info('/path/to/directory', FALSE);第 3 步:将你的插件转换成辅助函数Step 3: Convert your Plugins to Helpers

2.0.0版删除了插件系统,因为它的功能与辅助函数完全一样,但是它们缺乏扩展性。你需要将你的插件的文件名从“文件名_pi.php”改为“文件名_helper.php”,并且移动到你的helpers目录,然后更改所有的调用$this->load->plugin('foo');为$this->load->helper('foo');

第 4 步:升级存储的已加密数据

说明:如果你的应用程序没有使用加密类库,没有保存永久加密数据,或者在一个不支持Mcrypt的环境,你可以跳过此步。

加密类库进行了数量众多的更新,一些在加密强度方面和一些在执行方面,因此不可避免地导致了该类库前期版本的加密数据再也无法被解密。为了帮助转换,我们添加了一个新方法encode_from_legacy(),它将使用原来的算法解密数据并返回一个使用升级的算法重新加密后的数据。这样你可以轻松而快速地大量更新你的应用程序中的旧的加密数据。

请在加密类库的文档中阅读如何使用这个方法

第 5 步:删除对兼容性辅助函数的调用

兼容性辅助函数已经从CodeIgniter核心中删除。其中的所有方法都已被PHP原生支持。

第 6 步:升级类的继承方式

现在所有的核心类都使用了“CI_”前缀。请分别升级模型和控制器为继承CI_Model和CI_Controller。

第 7 步:升级对父类构造函数的调用

现在所有的原生CodeIgniter类都使用了PHP 5的构造函数形式“__construct()”。请更改继承类的代码为调用“parent::__construct()”。

第 8 步: 升级你的用户手册

请将你的本地用户手册替换为新版本,包括图片文件

 楼主| 发表于 2011-2-11 22:56:04 | 显示全部楼层
上面的是手册上的东西。
但是自己的升级过程中遇到了几点

1.使用ci_session必须在config中加一个东西
/*
|--------------------------------------------------------------------------
| Encryption Key
|--------------------------------------------------------------------------
|
| If you use the Encryption class or the Session class you
| MUST set an encryption key.  See the user guide for info.
|
*/
$config['encryption_key'] = 'cmsphp';

2.所有控制器里的Controller 替换成CI_Controller  
例如:
class article_list extends Controller {
改成
class article_list extends CI_Controller  {

3.所有模型里的Model 替换成CI_Model
例如:
class article_model extends Model {
改成
class article_model extends  CI_Model {
4.validation删除了被替换成了form_validatio
例如:
$this->load->library ( 'validation' );
改成
$this->load->library('form_validation');
还有一点
在试图里的保存在东西有变化
例如:
value="<?php echo $this->validation->user_name;?>">
改成
value="<?php echo set_value('user_name'); ?>">

其他升级知识点以后陆续放出来。
发表于 2011-2-12 15:43:59 | 显示全部楼层
不错,继续研究,越来越强大了。
发表于 2011-8-19 16:46:55 | 显示全部楼层
多谢啦!

本版积分规则