ThinkPHP 3.2發(fā)布了挺長(zhǎng)時(shí)間了,這里也總結(jié)下這次ThinkPHP 3.2到底發(fā)生了哪些變化,方便程序員們進(jìn)行開(kāi)發(fā)。
前言
ThinkPHP 3.2 基于 ThinkPHP 3.1 的基礎(chǔ)上有許多的變化,我覺(jué)得這個(gè)版本應(yīng)該設(shè)立為 ThinkPHP 4.0 而不是什么 3.2。如果你在使用 ThinkPHP 3.1 請(qǐng)勿貿(mào)然遷移升級(jí),這可不是簡(jiǎn)單的覆蓋下文件就安然無(wú)恙的事情。
1. PHP 的版本
ThinkPHP 3.2 要求 PHP 5.3 以上的版本,而 ThinkPHP 3.1 只需要 PHP 5.2 就好了
2. 程序文件夾的修改
ThinkPHP 3.2 使用 Application 作為程序文件夾,而 ThinkPHP 3.1 則是用 app 作為程序文件夾。
3. 不同分組設(shè)定的升級(jí)
建議以后開(kāi)發(fā)盡量不要做分組,要不然針對(duì)分組,有不少要處理的地方,這里只是介紹未分組的情況,有做分組的朋友,請(qǐng)上官方文檔尋找答案。
ThinkPHP 3.2 設(shè)置了一個(gè) Home 目錄,很多文件都將遷移到 Home 目錄中。
代碼如下:
App/Common/common.php => Application/Home/Common/function.php
App/Common/extend.php => Application/Home/Common/extend.php(假設(shè)存在定義的話)
App/Conf/Config.php => Application/Home/Conf/config.php
App/Lang/zh-cn/common.php => Application/Home/Lang/zh-cn.php(假設(shè)存在的話)
App/Lib/Action => Application/Home/Action
App/Lib/Model => Application/Home/Model
App/Tpl => Application/Home/View
注意,因?yàn)?Home 目錄的出現(xiàn),你需要修改你的 .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>
否則,將會(huì)出現(xiàn)模塊找不到的錯(cuò)誤。
新的目錄對(duì) Action 和 Tpl 進(jìn)行了重新命名,分別為 Controller 和 View,這樣更加直觀的體現(xiàn)了 MVC 的文件夾的部署方式。對(duì)于那些保留了 Action 的朋友,可以修改 Application/Common/config.php 中的信息:
代碼如下:
'DEFAULT_C_LAYER' => 'Action', // 默認(rèn)的控制器層名稱
'MODULE_ALLOW_LIST' => array('Home','Admin',...), // 配置你原來(lái)的分組列表
'DEFAULT_MODULE' => 'Home', // 配置你原來(lái)的默認(rèn)分組
4. 系統(tǒng)配置參數(shù)的變動(dòng)
ThinkPHP 3.2 廢棄了以下系統(tǒng)配置參數(shù)
代碼如下:
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
修改了以下配置參數(shù)
代碼如下:
DEFAULT_MODULE => DEFAULT_CONTROLLER
5. 命名空間
ThinkPHP 3.2 添加了命名空間,把項(xiàng)目的Application/Home/Action目錄下面的所有文件,頭部添加如下代碼(必須是除注釋以外的第一行):
代碼如下:
namespace Home\Action;
use Think\Action;
如果你的項(xiàng)目使用了控制器分層的話,需要對(duì)每個(gè)分層的類庫(kù)文件添加類似的代碼,例如有定義Event分層的話,需要在頭部添加:
代碼如下:
namespace Home\Event;
use Think\Action;
把項(xiàng)目的Application/Home/Model目錄下面的所有文件,頭部添加如下代碼(必須是除注釋以為的第一行):
代碼如下:
namespace Home\Model;
use Think\Model;
如果你的項(xiàng)目使用了模型分層的話,需要對(duì)每個(gè)分層的類庫(kù)文件添加類似的代碼,例如如果你有Service分層,需要在頭部添加:
代碼如下:
namespace Home\Service;
use Think\Model;
6. 方法調(diào)整
控制器類Think\Controller或者Think\Action的下列方法已經(jīng)廢除:
廢除方法替代方法
_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. 常量調(diào)整
下列常量已經(jīng)廢除:
APP_NAME // 3.2版本中無(wú)需再定義該常量
__GROUP__ // 3.2版本中可以用__MODULE__ 表示模塊的URL地址
GROUP_NAME //3.2版本中可以用 MODULE_NAME 獲取當(dāng)前模塊名
MODE_NAME // 3.2版本中模式擴(kuò)展已經(jīng)廢棄,參考下面的模式調(diào)整部分
這樣就基本上完成了遷移,如果中間還有一些修改的話,請(qǐng)上官方文檔尋找答案。
以上就是本文所述關(guān)于ThinkPHP3.2發(fā)生的變化了,希望對(duì)大家能夠有所幫助。
更多信息請(qǐng)查看IT技術(shù)專欄