Laravel 5.0 的新特性
原文 http://segmentfault.com/blog/justjavac/1190000002544001
Laravel 5.0 包括超過 22 個新特性 。
Laravel 5.0 引入了一個新鮮的應用架構到默認的 Laravel 項目中,這個架構會提供更好的 Laravel 應用的服務。同時還加入了新的自動加載標準 (PSR-4) 。主要改進如下:
1. 新的文件夾結構
</h2>
<p>
原有的 <code>app/models</code> 目錄已全部刪除。相反,你所有的代碼,直接放在 <code>app</code> 文件夾中,并且,默認情況下使用 App 命名空間。這個默認命名空間可以很方便的使用 <code>app:name</code> Artisan 命令更換為其他名字。
</p>
<p>
控制器,中間件,和請求(Laravel 5.0 中新增的類型)現在放到了 <code>app/Http</code> 目錄下,因為在你的應用程序中,這些都是負責 HTTP 傳輸層相關的類。所有的路由過濾器,所有的中間件,都放到了它們自己的類文件中,而不是像以前那樣放在單獨的一個文件里。
</p>
<p>
app/Providers 目錄替換了Laravel 4.X 的 <code>app/start</code> 文件。這些服務提供者(Service Provider)為您的應用程序提供不同的引導功能,例如錯誤處理,日志,路由加載,等等。當然,你可以自行為應用程序創建其它的 Service Provider。
</p>
<p>
語言文件和視圖被移到了 <code>resources</code> 目錄。
</p>
<h2>
2. Contracts
</h2>
<p>
所有主要的 Laravel 組件實現接口都放在 <code>illuminate/contracts</code> 庫,沒有外部依賴。
</p>
<p>
關于 contracts 的更多信息,可以查看 <a rel="nofollow,noindex" href="/misc/goto?guid=4958864369266359840">contracts 文檔</a> 。
</p>
<h2>
3. 路由緩存
</h2>
<p>
如果你的應用程序使用的控制器路由,你可以使用 <code>route:cache Artisan</code> 命令加速你的路由表。如果你的應用程序使用了超過 100 個路由,那么這個性能提升是非常顯著的。
</p>
<h2>
4. 路由中間件
</h2>
<p>
除了 Laravel 4 風格的路由 "filters", Laravel 5 支持 HTTP 中間件,而且包含認證和 CSRF
1. 新的文件夾結構
</h2>
<p>
原有的 <code>app/models</code> 目錄已全部刪除。相反,你所有的代碼,直接放在 <code>app</code> 文件夾中,并且,默認情況下使用 App 命名空間。這個默認命名空間可以很方便的使用 <code>app:name</code> Artisan 命令更換為其他名字。
</p>
<p>
控制器,中間件,和請求(Laravel 5.0 中新增的類型)現在放到了 <code>app/Http</code> 目錄下,因為在你的應用程序中,這些都是負責 HTTP 傳輸層相關的類。所有的路由過濾器,所有的中間件,都放到了它們自己的類文件中,而不是像以前那樣放在單獨的一個文件里。
</p>
<p>
app/Providers 目錄替換了Laravel 4.X 的 <code>app/start</code> 文件。這些服務提供者(Service Provider)為您的應用程序提供不同的引導功能,例如錯誤處理,日志,路由加載,等等。當然,你可以自行為應用程序創建其它的 Service Provider。
</p>
<p>
語言文件和視圖被移到了 <code>resources</code> 目錄。
</p>
<h2>
2. Contracts
</h2>
<p>
所有主要的 Laravel 組件實現接口都放在 <code>illuminate/contracts</code> 庫,沒有外部依賴。
</p>
<p>
關于 contracts 的更多信息,可以查看 <a rel="nofollow,noindex" href="/misc/goto?guid=4958864369266359840">contracts 文檔</a> 。
</p>
<h2>
3. 路由緩存
</h2>
<p>
如果你的應用程序使用的控制器路由,你可以使用 <code>route:cache Artisan</code> 命令加速你的路由表。如果你的應用程序使用了超過 100 個路由,那么這個性能提升是非常顯著的。
</p>
<h2>
4. 路由中間件
</h2>
<p>
除了 Laravel 4 風格的路由 "filters", Laravel 5 支持 HTTP 中間件,而且包含認證和 CSRF
功能的 "filters" 也已經轉換為了中間件。中間件提供了單一的,一致的接口來取代所有類型的過濾器,在 Request 進入你的應用程序之前,允許您輕松地檢查,甚至拒絕它們。 </p>
想了解中間件的更多信息,查看 Middleware 文檔 。
5. 控制器方法注入
</h2>
<p>
除了現有的構造函數注入,你現在可以使用 <a rel="nofollow,noindex" href="/misc/goto?guid=4958864369431676203">類型約束</a> 特性來指定控制器的依賴。 <a rel="nofollow,noindex" href="/misc/goto?guid=4958864369514919217">IOC 容器</a> 會自動注入依賴,即使路由包含了其他參數:
</p>
5. 控制器方法注入
</h2>
<p>
除了現有的構造函數注入,你現在可以使用 <a rel="nofollow,noindex" href="/misc/goto?guid=4958864369431676203">類型約束</a> 特性來指定控制器的依賴。 <a rel="nofollow,noindex" href="/misc/goto?guid=4958864369514919217">IOC 容器</a> 會自動注入依賴,即使路由包含了其他參數:
</p>
phppublic function createPost(Request $request, PostRepository $posts) { // }
6. Authentication 腳手架
</h2>
<p>
在 <code>resources/views/auth</code> 中,為以下控制器,包括用戶注冊,認證,和密碼重置,提供了開箱即用功能,而且包含了簡單的視圖。此外,框架還包括了 "users" 表的遷移。這樣就可以快速開發出應用程序想要實現的功能,而不用將精力浪費在認證模塊上。認證功能的視圖可以通過 <code>auth/login</code> 和 <code>auth/register</code> 訪問。 <code>App\Services\Auth\Registrar</code> 負責用戶驗證和創建。
</p>
<h2>
7. Event Objects
</h2>
<p>
你現在可以將事件定義為對象,而不是簡單地使用字符串。例如,看看下面的事件:
</p>
6. Authentication 腳手架
</h2>
<p>
在 <code>resources/views/auth</code> 中,為以下控制器,包括用戶注冊,認證,和密碼重置,提供了開箱即用功能,而且包含了簡單的視圖。此外,框架還包括了 "users" 表的遷移。這樣就可以快速開發出應用程序想要實現的功能,而不用將精力浪費在認證模塊上。認證功能的視圖可以通過 <code>auth/login</code> 和 <code>auth/register</code> 訪問。 <code>App\Services\Auth\Registrar</code> 負責用戶驗證和創建。
</p>
<h2>
7. Event Objects
</h2>
<p>
你現在可以將事件定義為對象,而不是簡單地使用字符串。例如,看看下面的事件:
</p>
phpclass PodcastWasPurchased { public $podcast; public function __construct(Podcast $podcast) { $this->podcast = $podcast; } }
事件 dispatched:
php
Event:
:fire(new PodcastWasPurchased($podcast));
當然,事件處理程序接收到的是事件對象,而不是數據列表:
php
class ReportPodcastPurchase { public function handle(PodcastWasPurchased $event) { // } }
想了解更多關于事件處理的信息,查看 Event 文檔 。
8. 命令 / 隊列
</h2>
<p>
除了 Laravel 4 支持的 job 格式的隊列,Laravel 5 允許你把隊列作為簡單的 command 對象。這些命令在 <code>app/Commands</code> 目錄里。以下的命令示例:
</p>
8. 命令 / 隊列
</h2>
<p>
除了 Laravel 4 支持的 job 格式的隊列,Laravel 5 允許你把隊列作為簡單的 command 對象。這些命令在 <code>app/Commands</code> 目錄里。以下的命令示例:
</p>
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)); }
}</pre>
Laravel 控制器使用新的
DispatchesCommands
特性,讓你輕松的執行命令調度:php
$this->dispatch(new PurchasePodcastCommand($user, $podcast));
當然,你也可以使用 command 方式(無隊列)。事實上,對于負責的任務,使用 command 是非常好的方法。更多信息,查看 command bus 文檔 。
9. 數據庫隊列 </h2> <p> 現在 Laravel 新增了數據庫隊列驅動,提供一個簡單的,本地隊列驅動,不需要額外的安裝包。 </p> <p> 【其它新特性正在翻譯中,您可以在 <a rel="nofollow,noindex" href="/misc/goto?guid=4958864369765677870">http://discuss.flarum.org.cn/24-laravel-5</a> 關注最新的翻譯動態...】 </p> </div>
</div>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!