亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

Laravel 5.0 發布 新版本特性詳解

2024-05-04 23:31:06
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Laravel 5.0 發布 新版本特性詳解,本文講解了目錄結構、Contracts、路由緩存、路由中間、控制器方法注入、認證腳手架等新特性,需要的朋友可以參考下
 

譯注: 期待 Laravel 5.0 已經很久很久了, 之前跳票說要到今年一月份發布. 從一月份就一直在刷新官網和博客, 始終沒有更新的消息, 前幾天終于看到官網文檔切換到了 5.0 版. 新版本帶來了眾多令人激動的新特性, 尤其是定時任務隊列和表單請求兩個特性, 光看一下更新說明中的簡單介紹都忍不住要上手嘗試了. 今天總算抽出一點時間把官方的新特性說明文檔簡單地翻譯了一下, 希望所有喜歡 Laravel 框架的朋友都能感受到這個版本帶來的激動人心的改變. 當然, 如果你需要的是 Phalcon 那樣的性能, 那它肯定不是你需要的. 如果你是因為虛擬主機不支持 php 5.4 而不能享受 Laravel, 那你還不扔了你的虛擬主機??? 阿里云/騰訊云/linode... VPS的選擇不要太多...

Laravel 5.0

Laravel 5.0 引入了全新的項目目錄結構. 新的目錄結構更有利于用 Laravel 來創建應用. 5.0 版從頭到尾都采用了新的 PSR-4 自動加載標準. 以下是 5.0 版主要的新特性:

目錄結構

以前版本中的 app/models 目錄被整個移除. 如今你可以直接把代碼放在 app 目錄下, 該目錄下的所有代碼默認會被組織到 app 命名空間. 這個命名空間是可以通過新增加的 Artisan 命令 app:name 來修改的.

Controllers, middleware 和 requests (Laravel 5.0 新增加的一種類) 被組織到 app/Http 目錄, 因為他們都是與你應用的 HTTP 傳輸層相關的類. 與之前把所有路由過濾器放到單一的 filters 文件下不同, 現在所有的 middleware (類似之前的 route filter) 被分別存放到各自自己的類文件中.

新版本中增加了一個 app/Providers 目錄來代替之前 4.x 版本的 app/start 文件. 這些 service providers 為應用提供各種各樣的引導方法, 比如錯誤處理, 日志記錄, 路由加載等. 除此之外你當然也可以創建額外的 service providers.

應用的語言文件和視圖被移到了 resources 目錄.

Contracts

Laravel 的所有主要組件都實現了存放在 illuminate/contracts 倉庫中的接口. 該倉庫沒有額外的依賴項. 擁有這樣一個方便的, 集中存放的接口集合, 你就可以很容易地通過它來對 Laravel Facades 進行解耦和依賴注入方面的選擇和修改.

了解有關 contracts 的更多信息, 可以查看它的完整文檔.
路由緩存

如果你的應用由各種各樣的控制器路由 (controller routes) 組成, 你可以利用新增的 Artisan 命令 route:cache 大幅度提升路由的注冊速度. 這在路由數量超過 100 個的應用中尤其有效, 可以 大幅度 提升整個應用在路由部分的速度.

路由中間件 (Route Middleware)

在 4.0 版風格的路由 "過濾器" 基礎上, 新版 5.0 已經支持 HTTP 中間件, Laravel 自帶的 "authentication" 和 "filters" 已經被轉換成中間件. 中間件為所有類型的過濾器提供了單一接口, 你可以很容易地對請求進行審查和拒絕.

了解有關中間件的更多信息, 可以查看它的完整文檔.

控制器方法注入

除了現有的構造器注入以外, 在新版本中還可以在控制器方法中的依賴項進行類型約束. IoC container 會自動注入依賴項, 即使在路由包含其它參數的時候也是.

復制代碼代碼如下:

public function createPost(Request $request, PostRepository $posts)
{
    //
}

認證腳手架

 

用戶注冊, 認證以及密碼重置控制器已經內置在 5.0 版的網站框架中, 除了控制器以外, 還有簡單的視圖, 存放在 resources/views/auth 目錄. 除此之外, 網站初始框架中還包含了一個 "users" 表的 migration 文件. 這些簡單的資源幫助開發者不用在用戶認證功能上耗費大量時間. 認證相關的頁面可以通過 auth/login 和 auth/register 這兩個路由訪問. App/Services/Auth/Registrar 服務負責處理創建和認證用戶.

事件對象

在新版本中, 你可以把事件定義成對象而不是字符串. 看下面的例子:

復制代碼代碼如下:

class PodcastWasPurchased {
 
    public $podcast;
 
    public function __construct(Podcast $podcast)
    {
        $this->podcast = $podcast;
    }
 
}

這個事件可以這樣調用:

 

Event::fire(new PodcastWasPurchased($podcast));
當然, 你的事件處理程序收到的也不再是一個數據列表, 而是一個事件對象:

復制代碼代碼如下:

class ReportPodcastPurchase {
 
    public function handle(PodcastWasPurchased $event)
    {
        //
    }
 
}

了解有關事件的更多信息, 可以查看它的完整文檔.

 

命令/隊列

在 4.0 版支持的任務隊列基礎上, 5.0 支持把任務隊列定義為簡單的命令對象. 這些命令存放在 app/Commands 目錄. 下面是一個簡單的命令示例:

復制代碼代碼如下:

class PurchasePodcast extends Command implements SelfHandling, ShouldBeQueued {
 
    use SerializesModels;
 
    protected $user, $podcast;
 
    /**
     * 創建新的命令實例
     *
     * @return void
     */
    public function __construct(User $user, Podcast $podcast)
    {
        $this->user = $user;
        $this->podcast = $podcast;
    }
 
    /**
     * 執行命令
     *
     * @return void
     */
    public function handle()
    {
        // 處理購買播客視頻的邏輯
 
        event(new PodcastWasPurchased($this->user, $this->podcast));
    }
 
}

Laravel 的基礎控制器 (base controller) 使用了新的 DispatchesCommands 特性, 允許你很方便地監控命令的執行:

 

$this->dispatch(new PurchasePodcastCommand($user, $podcast));
當然, 你不僅可以把命令用于任務隊列(非同步執行), 也可以用于同步任務. 事實上, 把你的應用需要執行的復雜任務封裝成命令是一個很好的選擇. 了解有關命令的更多信息, 可以查看命令橋的詳細文檔.

數據庫隊列

新版 Laravel 包含 database 隊列驅動, 提供簡單的, 本地的隊列驅動, 無需安裝額外的包. (譯注:比如讓不支持事務的數據庫進行類似事務的數據操作)

Laravel 定時任務

在過去, 為了定時執行控制臺任務, 開發者必須依賴 Cron 任務. 這帶來很大不便. 因為定時任務并不包括在網站的源代碼中, 而且必須通過 SSH 登陸到服務器去添加 Cron 任務. 新版 Laravel 的定時任務允許開發者在 Laravel 框架內來定義定時執行的命令, 然后只需要在服務器上定義一個總的 Cron 任務即可.

比如:

復制代碼代碼如下:

$schedule->command('artisan:command')->dailyAt('15:00');

同樣的, 了解更多有關定時任務的信息, 可以查閱完整文檔.

 

Tinker / Psysh

php artisan tinker 命令在新版本中借助了 Justin Heleman 開發的 Psysh. 如果你喜歡 Laravel 4.0 里的 Boris, 你肯定會喜歡 Psysh. Boris 在 Windows 下運行得不好, Psysh 完全支持 Windows! 使用方法和以前一樣:

復制代碼代碼如下:

php artisan tinker

DotEnv

 

在 Laravel 5.0 中, 用 Vance Lucas 實現的 DotEnv 替代了以前版本中的嵌套結構, 容易讓人困惑的環境配置目錄. 這個框架提供了一種非常簡單的管理環境配置的方式. 在 Laravel 5.0 中檢測和區分不同的運行環境變得輕而易舉. 了解更多詳情, 請訪問完整的配置文檔.

Laravel Elixir

由 Jeffrey Way 提供的 Laravel Elixir 提供了簡明易懂的合并, 編譯資源文件的接口. 如果你曾經對配置 Grunt 或者 Gulp 感到很頭大, 那么現在你得到解放了. Elixir 讓你可以輕松地借助 Gulp 來編譯你的 Less, Sass 和 CoffeeScript 文件. 它甚至可以替你執行測試.

了解 Elixir 的更多詳情, 請訪問完整文檔.

Laravel Socialite

Laravel Socialite 只兼容 Laravel 5.0 以上版本的可選包, 它提供了完整而且上手毫無難度的 OAuth 解決方案. 目前, Socialite 支持 Facebook, Twitter, Google 和 Github. 它看起來是這個樣子的:

復制代碼代碼如下:

public function redirectForAuth()
{
    return Socialize::with('twitter')->redirect();
}
 
public function getUserFromProvider()
{
    $user = Socialize::with('twitter')->user();
}

所以你不用再耗費大量的時間來編寫 OAuth 認證流程, 分分鐘輕松搞定. 完整文檔 包含有關這個可選包的全部細節.

 

Flysystem 集成

新版 Laravel 還包含了強大的 Flysystem 文件處理靜態庫. 通過這個庫, 開發者可以輕易上手, 使用完全一致的 API 來實現本地, Amazon S3 或者 Rackspace 進行文件存儲. 比如, 在 Amazon S3 存儲一個文件, 可以簡單到這樣:

復制代碼代碼如下:

Storage::put('file.txt', 'contents');

了解有關 Laravel Flysystem 集成的更多細節, 可以查看它的完整文檔

 

表單請求

Laravel 5.0 帶來了全新的 form requests, 它擴展自 Illuminate/Foundation/Http/FormRequest 類. 這些請求對象可以和控制器方法注入相結合, 提供一種全新的驗證用戶輸入的方法. 簡單舉一個 FormRequest 的示例:

復制代碼代碼如下:

namespace App/Http/Requests;
 
class RegisterRequest extends FormRequest {
 
    public function rules()
    {
        return [
            'email' => 'required|email|unique:users',
            'password' => 'required|confirmed|min:8',
        ];
    }
 
    public function authorize()
    {
        return true;
    }
 
}

定義好對應的 FormRequest 擴展類之后, 在控制器方法中可以獲得類型提示:
復制代碼代碼如下:

public function register(RegisterRequest $request)
{
    var_dump($request->input());
}

當 Laravel 的 IoC container 識別到方法變量的類型時, 它會自動注入 FormRequest 的實例, 于是這個請求會被 自動驗證. 這意味著當你的控制器被調用時, 你可以安全地使用該請求中包含的輸入數據, 因為他們已經被你在表單請求類中指定的規則進行過驗證了. 不僅如此, 如果該請求驗證失敗, 系統還會自動重定向到你預定義好的路由, 并且包含有錯誤提示的信息(根據需要寫入session, 或者轉換為 JSON 格式.) 表單驗證從未如此簡單過. 了解有關 FormRequest 驗證的更多細節, 請查閱文檔.

 

控制器請求簡單驗證

Laravel 5.0 的控制器基類還包含了一個 ValidatesRequests 的 trait. 該 trait 提供了簡單的 validate 方法, 用于驗證請求. 如果 FormRequests 對于你的應用來說太重了, 那你就可以用這個輕量版的:

復制代碼代碼如下:

public function createPost(Request $request)
{
    $this->validate($request, [
        'title' => 'required|max:255',
        'body' => 'required',
    ]);
}

如果驗證失敗, 系統會拋出一個異常, 對應的 HTTP 請求會被自動發送給瀏覽器. 驗證錯誤也會同時寫入 session. 如果請求是用 AJAX 方式發起, Larave 會自動發送一個 JSON 形式的驗證錯誤信息.

 

了解有關 FormRequest 驗證的更多細節, 請查閱文檔.

全新的生成器

為了方便生成新的默認應用結構, 全新的 Artisan 生成命令已經被添加到框架中. 你可以通過 php artisan list 查看詳細命令.

配置緩存

通過 config:cache 命令, 可以把所有的配置項寫入一個緩存文件中.

Symfony VarDumper

用于輸出變量信息進行調試的輔助方法 dd, 在新版本中進行了升級, 使用強大的 Symfony VarDumper. 它可以輸出帶有顏色高亮和數組折疊功能的調試信息. 你可以嘗試一下:

復制代碼代碼如下:

dd([1, 2, 3]);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品久久久久a| 日韩电影在线观看永久视频免费网站| 亚洲精品xxx| 日本精品一区二区三区在线播放视频| 国产区亚洲区欧美区| 人人澡人人澡人人看欧美| 91美女片黄在线观| 91在线中文字幕| 欧美重口另类videos人妖| 亚洲精品永久免费| 97久久精品人人澡人人爽缅北| 日韩免费观看视频| 日本欧美在线视频| 在线视频免费一区二区| 亚洲色图狂野欧美| 91精品在线一区| 黑人狂躁日本妞一区二区三区| 免费97视频在线精品国自产拍| 国产成人亚洲综合| 中文字幕在线成人| 国产成人avxxxxx在线看| 精品精品国产国产自在线| 57pao国产成人免费| 欧美精品一区二区免费| 国产精品九九九| 国产精品久久久久久中文字| 日韩国产在线看| 欧洲美女7788成人免费视频| 清纯唯美亚洲综合| 懂色av中文一区二区三区天美| 国产一区二区日韩精品欧美精品| 亚洲a中文字幕| 欧美激情日韩图片| 91精品国产高清自在线| 日韩av高清不卡| 亚洲黄色免费三级| 热久久这里只有精品| 亚洲国产精品久久精品怡红院| 97久久国产精品| 久久久亚洲国产| 亚洲成年人在线播放| 日本伊人精品一区二区三区介绍| 欧美在线一区二区视频| 日韩av在线高清| 日韩欧美一区二区在线| 这里只有精品久久| 97在线看福利| 麻豆精品精华液| 成人午夜黄色影院| 91精品久久久久久久久青青| 日韩风俗一区 二区| 黑人巨大精品欧美一区免费视频| 精品国产乱码久久久久久天美| 亚洲aa在线观看| 亚洲最大的成人网| 午夜精品一区二区三区视频免费看| 色哟哟网站入口亚洲精品| 日韩国产中文字幕| 91精品国产综合久久香蕉| 成人有码视频在线播放| 国产精品福利网| 亚洲人精选亚洲人成在线| 亚洲欧美国产另类| 欧美精品videos性欧美| 中文字幕亚洲激情| 欧美日韩免费区域视频在线观看| 亚洲欧美日韩久久久久久| 欧美裸体xxxxx| 九九热最新视频//这里只有精品| 色综合久久中文字幕综合网小说| 亚洲一区二区在线播放| 91在线观看欧美日韩| 亚洲欧美日韩天堂| 永久免费看mv网站入口亚洲| 国产精品久久久久久久9999| 亚洲国产另类久久精品| 欧美日韩中文在线| 国语自产精品视频在线看抢先版图片| 国产在线高清精品| 国模视频一区二区| 欧美麻豆久久久久久中文| 亚洲qvod图片区电影| 不卡毛片在线看| 欧美性jizz18性欧美| 欧美一级片在线播放| 日韩av大片免费看| 91av成人在线| 国产精品小说在线| 国产精品高潮粉嫩av| 人人爽久久涩噜噜噜网站| 国产v综合v亚洲欧美久久| 日韩大陆欧美高清视频区| 国产精品一香蕉国产线看观看| 久久99久久99精品中文字幕| 国产成人av在线| 2019中文字幕免费视频| 国产美女直播视频一区| www.xxxx精品| 日韩欧美亚洲范冰冰与中字| 午夜剧场成人观在线视频免费观看| 日韩av在线一区| 在线视频国产日韩| 欧美在线免费看| 欧美成人免费在线观看| 国产一区二区三区在线视频| 91国产在线精品| 亚洲国产精品字幕| 91精品国产综合久久香蕉922| 97精品在线视频| www.欧美三级电影.com| 欧美在线视频导航| 日韩久久精品电影| 色综合色综合网色综合| 精品久久久久久中文字幕一区奶水| 日韩欧美一区二区在线| 91免费欧美精品| 国内精品久久久久| 国产精品v片在线观看不卡| 久久91精品国产91久久跳| 欧美激情第6页| 欧美另类第一页| 在线日韩第一页| 97在线观看免费高清| 久久在线免费视频| 国产噜噜噜噜久久久久久久久| 久热精品视频在线观看| 亚洲第一区中文字幕| 中文字幕欧美日韩精品| 亚洲美女自拍视频| 91天堂在线视频| 国模私拍一区二区三区| 精品视频9999| 奇米成人av国产一区二区三区| 久久久在线免费观看| 久久久久久亚洲精品中文字幕| 少妇久久久久久| 国产狼人综合免费视频| 欧美国产精品人人做人人爱| 亚洲大胆人体视频| 国模精品视频一区二区| 国产精品扒开腿做爽爽爽的视频| 色噜噜狠狠色综合网图区| 国产精品网红福利| 亚洲美女精品成人在线视频| 日韩欧美亚洲国产一区| 成人有码视频在线播放| 久久久精品网站| 日韩欧美在线看| 欧美激情乱人伦一区| 国产精品9999| 91亚洲va在线va天堂va国| 欧美综合第一页| 91在线视频成人| 日韩在线视频观看| 亚洲精品成人网| 国产日韩在线播放| 久久精品2019中文字幕| 欧美日韩福利在线观看| 亚洲激情视频网站| 国产综合在线看| 波霸ol色综合久久| 久久久久久久久亚洲| 韩国v欧美v日本v亚洲| 精品人伦一区二区三区蜜桃网站|