從ThinkPHP3轉到ThinkPHP5的那些坑

首先,這個教程是給擁有ThinkPHP3.2.3基礎的人看的,如果沒有學過Thinkphp3,也就不建議您這邊直接看這個教程,應該去看更加基礎的教程。

一、ThinkPHP5的入口文件。

學過ThinkPHP3的人應該知道,ThinkPHP3的入口文件就是根目錄的index.php,但是ThinkPHP5的根目錄并沒有index.php這個文件。他真正的路口文件其實在public里。

所以想要使用ThinkPHP5,第一步就是修改入口文件,修改入口文件的方式有兩種,

1.是在根目錄中新建一個index.php文件,然后輸入:

2.刪除public/index.php這個文件,然后在根目錄新建一個index.php,輸入:


//?應用目錄

define('APP_PATH',?__DIR__.'/apps/');

//?加載框架引導文件

require?'./thinkphp/start.php';

?>

二、url路由方式。

當ThinkPHP5正式啟動后,我想大家都會發現他運行到application\index\controller\Index.php里的index()這個函數了。

但是在ThinkPHP5里,我試用ThinkPHP3中的兼容url,也就是index.php?m=index&c=Index&a=index在這里完全不起作用。

后來查了下官網才知道ThinkPHP5已經不支持原來的那種url兼容模式了。改為了index.php?s=/index/Index/index這樣的結構。

三、廢除了C方法,M方法,U方法。

目前這三個方法是我使用最常用的方法,所以一開始使用ThinkPHP5,我這邊就出現了問題,發現這三個方法無法使用了。

取而代之的是config(),Db::name(),與Url()。關于數據庫,ThinkPHP5還提供了一個助手函數db,這個函數更加接近之前的M方法,可以更方便的查詢:

db('user')->where('id',1)->find();

db('user')->where('status',1)->select();

注意:使用db助手函數默認每次都會重新連接數據庫,而使用Db::name或者Db::table方法的話都是單例的。db函數如果需要采用相同的鏈接,可以傳入第三個參數,例如:

db('user',[],false)->where('id',1)->find();

db('user',[],false)->where('status',1)->select();

上面的方式會使用同一個數據庫連接,第二個參數為數據庫的連接參數,留空表示采用數據庫配置文件的配置。

四、調用模板的方式發生了變化

我在使用ThinkPHP3的時候,最經常使用的方法是$this -> display(),但是當我們使用ThinkPHP5時,會發現這個方法完全不能使用,取而代之的是$this -> fetch(),

并且需要使用在Control的return中,例如:

namespace?index\app\controller;

class?Index?extends?\think\Controller

{

public?function?index()

{

//?模板輸出

return?$this->fetch();

}

}

五、debug功能的啟動

ThinkPHP3的debug功能是默認打開的,但是ThinkPHP5的debug功能卻是默認關閉的,打開方式是修改配置文件,添加兩個配置項。

'app_debug'?????????????=>?true,//啟動debug功能

'show_error_msg'????????=>?true,//啟動錯誤輸出功能


文章來源:武漢app開發 http://www.worldflying.cn/article-id-20.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容