我眼裏的THINKPHP5新亮點(1)

1.URL訪問php

能夠看到,不管是URL訪問仍是命令行訪問,都採用PATH_INFO訪問地址,其中PATH_INFO的分隔符是能夠設置的。注意:5.0取消了URL模式的概念,而且普通模式的URL訪問再也不支持,但參數能夠支持普通方式傳值。thinkphp

即原來的普通模式http://localhost/?m=home&c=user&a=login&var=value(用參數傳遞來指定模塊控制器方法)和兼容模式http://localhost/?s=/home/user/login/var/value(用惟一參數傳遞模塊控制器方法和參數)都廢除了。剩下的pathinfo模式和重寫模式均可以使用,並且更美觀。函數

 

2.Traits引入thinkphp5

Trait 是PHP5.4引入的一個新特性。經過兩行語句(PHP5.5以上只需第二句)就能夠引入指定文件裏的方法。感受和接口差很少,可是trait是有方法體的,因此突出了複用性,接口突出的是多態。講真我比較喜歡trait,因此看到TP5有這個特性也是眼前一亮。post

load_trait('controller/Jump');  // 引入traits\controller\Jump
use \traits\controller\Jump;

 

3.路由定義spa

TP5的路由的變化真的太大了...TP3的時候路由仍是默認路由(模塊控制器方法 對應就是 相應的路由),TP5就變成了能夠配置成任何字符的路由,雖然比以前繁瑣了一些,可是這樣使得路由定義更強大了,BTW感受有點像Lavarel。命令行

// 註冊路由到index模塊的News控制器的read操做
Route::rule('new/:id','index/index/read');

除了rule方法,還有get,post,delete方法之類,反正真的挺強大的。code

 

4.控制器 前置操做接口

protected $beforeActionList = [

        'first',

        'second' =>  ['except'=>'hello'],

        'three'  =>  ['only'=>'hello,data'],

    ];

這個新功能也是讓我眼前一亮的,由於在實際開發中應該會頻繁用到,好比登陸Session驗證就須要在每一個方法開頭進行,否則用戶沒登陸就能夠執行功能。代碼分別表示所有方法都前置執行first,除了hello其餘方法都前置執行second,只有hello和data方法前置執行three。three

 

5.I方法變成了一大串的函數

// 獲取當前請求的name變量

Request::instance()->param('name');// 獲取當前請求的全部變量(通過過濾)

Request::instance()->param();// 獲取當前請求的全部變量(原始數據)

Request::instance()->param(false);// 獲取當前請求的全部變量(包含上傳文件)

Request::instance()->param(true);

原本獲取post過來的id只需I(‘post.id’)或者I(‘id’)就能夠,如今要寫Request::instance()->param('id');這一串東西....還要use Think\Request;麻煩了好多...原本用I方法就是由於方便,比起$_POST()要少寫不少,如今這個方法真的太麻煩了...

ThinkPHP5.0 取消了用於判斷請求類型的系統常量(如IS_GET,IS_POST等),統一採用 think\Request類 處理請求類型。

IS_GET == Request::instance()->isGet()

IS_POST == Request::instance()->isPost()

嗯也是變長變麻煩了...

 

在看TP5的時候還稍微用了一下,印象深入的竟然是錯誤提示...比以前版本的提示好看並且也詳細多了。

BTW,但願TP愈來愈強大!

 

若有錯誤,懇請指點。_(:з」∠)_,謝謝觀看。

參考:ThinkPHP5.0徹底開發手冊(http://www.kancloud.cn/manual/thinkphp5)

相關文章
相關標籤/搜索