Laravel 5.0 的新特性
原文: http://laravel.com/docs/master/releases#laravel-5.0
譯文: http://discuss.flarum.org.cn/24-laravel-5
譯者: flarum
Laravel 5.0 包括超過 22 個新特性。
Laravel 5.0 引入了一個新鮮的應(yīng)用架構(gòu)到默認的 Laravel 項目中,這個架構(gòu)會提供更好的 Laravel 應(yīng)用的服務(wù)。同時還加入了新的自動加載標準 (PSR-4) 。主要改進如下:
1. 新的文件夾結(jié)構(gòu)
原有的 app/models 目錄已全部刪除。相反,你所有的代碼,直接放在 app 文件夾中,并且,默認情況下使用 App 命名空間。這個默認命名空間可以很方便的使用 app:name Artisan 命令更換為其他名字。
控制器,中間件,和請求(Laravel 5.0 中新增的類型)現(xiàn)在放到了 app/Http 目錄下,因為在你的應(yīng)用程序中,這些都是負責 HTTP 傳輸層相關(guān)的類。所有的路由過濾器,所有的中間件,都放到了它們自己的類文件中,而不是像以前那樣放在單獨的一個文件里。
app/Providers 目錄替換了Laravel 4.X 的 app/start 文件。這些服務(wù)提供者(Service Provider)為您的應(yīng)用程序提供不同的引導(dǎo)功能,例如錯誤處理,日志,路由加載,等等。當然,你可以自行為應(yīng)用程序創(chuàng)建其它的 Service Provider。
語言文件和視圖被移到了 resources 目錄。
2. Contracts
所有主要的 Laravel 組件實現(xiàn)接口都放在 illuminate/contracts 庫,沒有外部依賴。
關(guān)于 contracts 的更多信息,可以查看 contracts 文檔。
3. 路由緩存
如果你的應(yīng)用程序使用的控制器路由,你可以使用 route:cache Artisan 命令加速你的路由表。如果你的應(yīng)用程序使用了超過 100 個路由,那么這個性能提升是非常顯著的。
4. 路由中間件
除了 Laravel 4 風格的路由 "filters", Laravel 5 支持 HTTP 中間件,而且包含認證和 CSRF 功能的 "filters" 也已經(jīng)轉(zhuǎn)換為了中間件。中間件提供了單一的,一致的接口來取代所有類型的過濾器,在 Request 進入你的應(yīng)用程序之前,允許您輕松地檢查,甚至拒絕它們。
想了解中間件的更多信息,查看 Middleware 文檔。
5. 控制器方法注入
除了現(xiàn)有的構(gòu)造函數(shù)注入,你現(xiàn)在可以使用類型約束特性來指定控制器的依賴。IOC 容器會自動注入依賴,即使路由包含了其他參數(shù):
phppublic function createPost(Request $request, PostRepository $posts) {// }6. Authentication 腳手架
在 resources/views/auth 中,為以下控制器,包括用戶注冊,認證,和密碼重置,提供了開箱即用功能,而且包含了簡單的視圖。此外,框架還包括了 "users" 表的遷移。這樣就可以快速開發(fā)出應(yīng)用程序想要實現(xiàn)的功能,而不用將精力浪費在認證模塊上。認證功能的視圖可以通過 auth/login 和 auth/register 訪問。App\Services\Auth\Registrar 負責用戶驗證和創(chuàng)建。
7. Event Objects
你現(xiàn)在可以將事件定義為對象,而不是簡單地使用字符串。例如,看看下面的事件:
phpclass PodcastWasPurchased {public $podcast;public function __construct(Podcast $podcast){$this->podcast = $podcast;}}事件 dispatched:
phpEvent::fire(new PodcastWasPurchased($podcast));當然,事件處理程序接收到的是事件對象,而不是數(shù)據(jù)列表:
phpclass ReportPodcastPurchase {public function handle(PodcastWasPurchased $event){//}}想了解更多關(guān)于事件處理的信息,查看 Event 文檔。
8. 命令 / 隊列
除了 Laravel 4 支持的 job 格式的隊列,Laravel 5 允許你把隊列作為簡單的 command 對象。這些命令在 app/Commands 目錄里。以下的命令示例:
phpclass PurchasePodcast extends Command implements SelfHandling, ShouldBeQueued {use SerializesModels;protected $user, $podcast;/*** Create a new command instance.** @return void*/public function __construct(User $user, Podcast $podcast){$this->user = $user;$this->podcast = $podcast;}/*** Execute the command.** @return void*/public function handle(){// Handle the logic to purchase the podcast...event(new PodcastWasPurchased($this->user, $this->podcast));}}Laravel 控制器使用新的 DispatchesCommands 特性,讓你輕松的執(zhí)行命令調(diào)度:
php$this->dispatch(new PurchasePodcastCommand($user, $podcast));當然,你也可以使用 command 方式(無隊列)。事實上,對于負責的任務(wù),使用 command 是非常好的方法。更多信息,查看 command bus 文檔。
9. 數(shù)據(jù)庫隊列
現(xiàn)在 Laravel 新增了數(shù)據(jù)庫隊列驅(qū)動,提供一個簡單的,本地隊列驅(qū)動,不需要額外的安裝包。
【其它新特性正在翻譯中,您可以在 http://discuss.flarum.org.cn/24-laravel-5 關(guān)注最新的翻譯動態(tài)...】
總結(jié)
以上是生活随笔為你收集整理的Laravel 5.0 的新特性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Codevs2822 爱在心中
- 下一篇: 个人重构之一般用户实现