ThinkPHP 3.2 版本升级了哪些内容
ThinkPHP 3.2 版本升级了哪些内容
ThinkPHP 3.2发布了挺长时间了,这里也总结下这次ThinkPHP 3.2到底发生了哪些变化,方便程序员们进行开发。
前言
ThinkPHP 3.2 基于 ThinkPHP 3.1 的基础上有许多的变化,我觉得这个版本应该设立为 ThinkPHP 4.0 而不是什么 3.2。如果你在使用 ThinkPHP 3.1 请勿贸然迁移升级,这可不是简单的覆盖下文件就安然无恙的事情。
1. PHP 的版本
ThinkPHP 3.2 要求 PHP 5.3 以上的版本,而 ThinkPHP 3.1 只需要 PHP 5.2 就好了
2. 程序文件夹的修改
ThinkPHP 3.2 使用 Application 作为程序文件夹,而 ThinkPHP 3.1 则是用 app 作为程序文件夹。
3. 不同分组设定的升级
建议以后开发尽量不要做分组,要不然针对分组,有不少要处理的地方,这里只是介绍未分组的情况,有做分组的朋友,请上官方文档寻找答案。
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 Home\Action;
use Think\Action;
如果你的项目使用了控制器分层的话,需要对每个分层的类库文件添加类似的代码,例如有定义Event分层的话,需要在头部添加:
代码如下:
namespace Home\Event;
use Think\Action;
把项目的Application/Home/Model目录下面的所有文件,头部添加如下代码(必须是除注释以为的第一行):
代码如下:
namespace Home\Model;
use Think\Model;
如果你的项目使用了模型分层的话,需要对每个分层的类库文件添加类似的代码,例如如果你有Service分层,需要在头部添加:
代码如下:
namespace Home\Service;
use Think\Model;
6. 方法调整
控制器类Think\Controller或者Think\Action的下列方法已经废除:
| 废除方法 | 替代方法 |
|---|---|
| _get('id') | I('get.id') |
| _post('id') | I('post.id') |
| _put('id') | I('put.id') |
| _param('id') | I('id') |
| _request('id') | I('request.id') |
| _cookie('id') | I('cookie.id') |
7. 常量调整
下列常量已经废除:
APP_NAME // 3.2版本中无需再定义该常量
__GROUP__ // 3.2版本中可以用__MODULE__ 表示模块的URL地址
GROUP_NAME //3.2版本中可以用 MODULE_NAME 获取当前模块名
MODE_NAME // 3.2版本中模式扩展已经废弃,参考下面的模式调整部分
这样就基本上完成了迁移,如果中间还有一些修改的话,请上官方文档寻找答案。
以上就是本文所述关于ThinkPHP3.2发生的变化了,希望对大家能够有所帮助。
ThinkPHP 3.2 版本升级了哪些内容的更多相关文章
- thinkphp——通过在线编辑器添加的内容在模板里正确显示(只显示内容,而不是html代码)
thinkphp编辑器回显问题如下: 解决办法如下: 对于编辑器发布的内容,前台模板显示为html的解决办法是: 在模板输出字段加入html_entity_decode()函数 也就是:PHP输出时的 ...
- ThinkPhp循环出数据库中的内容并输出到模板
<foreach name='user' item='v'> //循环出数据库中的内容 对应控制器->方法中的 $this->assign('user',M('user')- ...
- thinkphp 对百度编辑器里的内容进行保存
模板代码 <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="U ...
- thinkphp 解析带html标签的内容
1.实例一 <?php echo htmlspecialchars_decode($goodsinfo['Specification']);?> 2.实例二 {$show.article| ...
- ThinkPHP讲解(二)控制器
在这一节,具体讲解控制器,以Jiaowu应用目录为例. 1.如何写控制器,如何写操作方法? 在模块控制器目录Controller下新建一个控制器文件MainController.class.php,写 ...
- thinkPHP的模板是做什么用的
thinkPHP的模板是做什么用的 问题 为什么PHP中ThinkPHP有做类似模板引擎的东西?smarty也是?这些到底有何用? 我是真没发现它们的用处在哪里?分离了前端和PHP的依赖?HTML文件 ...
- 【独家】React Native 版本升级指南
前言 React Native 作为一款跨端框架,有一个最让人头疼的问题,那就是版本更新.尤其是遇到大版本更新,JavaScript.iOS 和 Android 三端的配置构建文件都有非常大的变动,有 ...
- Linux下Docker快速部署LAMP
文章目录 拿来即用 获取LAMP LAMP版本 icoty1/lamp:v1.1.0制作过程 获取ubuntu基础镜像 安装依赖 mysql apache/php phpmyadmin 使apache ...
- moodle3.15+,mysql完全的Unicode支持配置
https://docs.moodle.org/dev/Releases,moodle个版本升级的主要内容和改动 在windows是mysql.ini linux 下是mysql.cnf 因为MyS ...
随机推荐
- JAVA 正则表达式、汉字正则、 java正则代码
转自于:http://blog.csdn.net/q326527970/article/details/7513974 (一)字母.数字.下划线.汉字正则表达式 1. 只有字母.数字和下划线且不能以下 ...
- tnsnames.ora存放路径
tnsnames.ora存放路径: D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN
- loj 1004(dp)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25830‘ 思路:类似与数塔问题,自底向上处理,输入的时候稍微注意一 ...
- WebStorm9
下载地址: http://www.onlinedown.net/soft/554406.htm 注册码: UserName:William===== LICENSE BEGIN =====45550- ...
- Xamarin.Android提示aapt退出,代码为255
Xamarin.Android提示aapt退出,代码为255 错误信息:”aapt.exe”已退出,代码为255.出现这种问题,通常是由于该项目所使用Android SDK不完整.通过SDK Mana ...
- Javascript的对象封装和继承有哪些方法?优劣分别是什么?
1.对象封装方法 (1)原始模式生成对象 直接将我们的成员写入对象中,用函数返回. 缺点:很难看出是一个模式出来的实例. function Stu(name, score) { ...
- DataTable转换成List<T>
很多时候需要将DataTable转换成一组model,直接对model执行操作会更加方便直观. 代码如下: public static class DataTableToModel { public ...
- 状压DP POJ 2411 Mondriaan'sDream
题目传送门 /* 题意:一个h*w的矩阵(1<=h,w<=11),只能放1*2的模块,问完全覆盖的不同放发有多少种? 状态压缩DP第一道:dp[i][j] 代表第i行的j状态下的种数(状态 ...
- LightOJ1057 Collecting Gold(状压DP)
这道题可以想到几点: 整个行程可以看作一次次的行走,每次行走都是用最短的路程从某一非空点到达另外一非空点: 两点间最少的步数是二者x和y坐标差的最大值: 返回原点这个过程,肯定是取完最后一个黄金后直接 ...
- 如何修改 SplendidCRM 页脚版权信息
打开 SplendidCRM 网站中的Web Site\_controls\Copyright.ascx 文件找到这段代码<div id="divFooterCopyright&quo ...