国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

Laravel 5.0 發布 新版本特性詳解

2024-05-04 21:54:44
字體:
來源:轉載
供稿:網友

 這篇文章主要介紹了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 定時任務

共2頁上一頁12下一頁
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大荔县| 宁陵县| 宜兴市| 清新县| 石城县| 怀仁县| 象山县| 崇义县| 贵德县| 蒙山县| 巴东县| 逊克县| 水城县| 黎城县| 北安市| 桑植县| 华亭县| 聂拉木县| 佛学| 尼玛县| 修水县| 涟水县| 西乌| 安仁县| 鄂托克前旗| 南昌市| 泸州市| 海安县| 威海市| 腾冲县| 江西省| 克什克腾旗| 乾安县| 逊克县| 五常市| 屏边| 襄樊市| 偏关县| 牟定县| 东乡县| 青龙|