ThinkPHP 3.2 的变化

操作方法

  • 01

  • 02

    ThinkPHP 3.2 基于 ThinkPHP 3.1 的基础上有许多的变化,我觉得这个版本应该设立为 ThinkPHP 4.0 而不是什么 3.2。如果你在使用 ThinkPHP 3.1 请勿贸然迁移升级,这可不是简单的覆盖下文件就安然无恙的事情。这里就列出了下面几条 ThinkPHP 3.2 改变的地方以及迁移中的注意事项: ###1. PHP 的版本 ThinkPHP 3.2 要求 PHP 5.3 以上的版本,而 ThinkPHP 3.1 只需要 PHP 5.2 就好了 ###2. 程序文件夹的修改 ThinkPHP 3.2 使用 Application 作为程序文件夹,而 ThinkPHP 3.1 则是用 app 作为程序文件夹。 ###3. 不同分组设定的升级 建议以后开发尽量不要做分组,要不然针对分组,有不少要处理的地方,这里只是介绍未分组的情况,有做分组的朋友,请上[官方文档][1]寻找答案。 ThinkPHP 3.2 设置了一个 Home 目录,很多文件都将迁移到 Home 目录中。 >     App/Common/common.php     =>  Application/Home/Common/function.php >     App/Common/extend.php     =>  Application/Home/Common/extend.php(假设存在定义的话) >     App/Conf/Config.php       =>  Application/Home/Conf/config.php >     App/Lang/zh-cn/common.php =>  Application/Home/Lang/zh-cn.php(假设存在的话) >     App/Lib/Action     =>    Application/Home/Action >     App/Lib/Model      =>    Application/Home/Model >     App/Tpl            =>    Application/Home/View 注意,因为 Home 目录的出现,你需要修改你的 .htaccess 文件为 <IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/home/$1 [QSA,PT,L] </IfModule> 否则,将会出现模块找不到的错误。 新的目录对 Action 和 Tpl 进行了重新命名,分别为 Controller 和 View,这样更加直观的体现了 MVC 的文件夹的部署方式。对于那些保留了 Action 的朋友,可以修改 Application/Common/config.php 中的信息: 'DEFAULT_C_LAYER'       =>  'Action', // 默认的控制器层名称 'MODULE_ALLOW_LIST'     =>  array('Home','Admin',...), // 配置你原来的分组列表 'DEFAULT_MODULE'        =>  'Home', // 配置你原来的默认分组 ###4. 系统配置参数的变动 ThinkPHP 3.2 废弃了以下系统配置参数 >APP_GROUP_LIST >APP_GROUP_MODE >APP_AUTOLOAD_PATH >APP_TAGS_ON >APP_GROUP_PATH >DEFAULT_APP >DEFAULT_GROUP >VAR_GROUP >LOG_DEST >LOG_EXTRA 修改了以下配置参数 DEFAULT_MODULE => DEFAULT_CONTROLLER ###5. 命名空间 ThinkPHP 3.2 添加了命名空间,把项目的Application/Home/Action目录下面的所有文件,头部添加如下代码(必须是除注释以外的第一行): namespace HomeAction; use ThinkAction; 如果你的项目使用了控制器分层的话,需要对每个分层的类库文件添加类似的代码,例如有定义Event分层的话,需要在头部添加: namespace HomeEvent; use ThinkAction; 把项目的Application/Home/Model目录下面的所有文件,头部添加如下代码(必须是除注释以为的第一行): namespace HomeModel; use ThinkModel; 如果你的项目使用了模型分层的话,需要对每个分层的类库文件添加类似的代码,例如如果你有Service分层,需要在头部添加: namespace HomeService; use ThinkModel; ###6. 方法调整 控制器类ThinkController或者ThinkAction的下列方法已经废除: <table class="table table-bordered table-striped table-condensed" style="width: 300px"> <tr><th>废除方法</th><th>替代方法</th></tr> <tr><td>_get('id')</td><td>I('get.id')</td></tr> <tr><td>_post('id')</td><td>I('post.id')</td></tr> <tr><td>_put('id')</td><td>I('put.id')</td></tr> <tr><td>_param('id')</td><td>I('id')</td></tr> <tr><td>_request('id')</td><td>I('request.id')</td></tr> <tr><td>_cookie('id')</td><td>I('cookie.id')</td></tr> </table> ###7. 常量调整 下列常量已经废除: >     APP_NAME    // 3.2版本中无需再定义该常量 >     __GROUP__   // 3.2版本中可以用 __MODULE__ 表示模块的URL地址 >     GROUP_NAME  // 3.2版本中可以用 MODULE_NAME 获取当前模块名 >     MODE_NAME   // 3.2版本中模式扩展已经废弃,参考下面的模式调整部分 这样就基本上完成了迁移,如果中间还有一些修改的话,请上[官方文档][1]寻找答案。 [1]: http://document.thinkphp.cn/manual_3_2.html#upgrade_guide

(0)

相关推荐