爲何Laravel是最成功的PHP框架?

    Laravel 是一個有着美好前景的年輕框架,它的社區充滿着活力,相關的文檔和教程完整而清晰,併爲快速、安全地開發現代應用程序提供了必要的功能。在近幾年對PHP 框架流行度的統計中,Laravel始終遙遙領先。那麼是什麼讓Laravel成爲最成功的PHP框架?php

        2011 年,Taylor Otwell將Laravel做爲一種包含全新現代方法的框架介紹給你們。Laravel最初的設計是爲了面向MVC架構的,它能夠知足如事件處理、用戶 身份驗證等各類需求。另外它還有一個由管理數據庫強力支持,用於管理模塊化和可擴展性代碼的軟件包管理器。Laravel以其簡潔、優雅的特性贏得了你們 的普遍關注,不管是專家仍是新手,在開發PHP項目的時候,都會第一時間的想到Laravel。本文咱們將討論爲何Laravel會成爲最成功的PHP 框架。laravel

模塊化和可擴展性

        Laravel注重代碼的模塊化和可擴展性。你能夠在包含超過5500個程序包的Packalyst目錄中找到你想要添加的任何文件。Laravel的目標是讓你可以找到任何想要的文件。算法

微服務和程序接口

        Lumen是一個由laravel衍生的專一於精簡的微框架。它高性能的程序接口可以讓你更加簡單快速的開發微型項目。Lumen使用最小的配置集成了全部laravel的重要特性,你能夠經過將代碼複製到laravel項目的方式將完整的框架遷移過來。數據庫

<?php
$app ->get( '/' function () {
    return  view( 'lumen' );
});
$app ->post( 'framework/{id}' function ( $framework ) {
    $this ->dispatch( new  Energy( $framework ));
});

HTTP路徑

        Laravel擁有相似於Ruby on Rails的,快速、高效的路由系統。它可讓用戶經過在瀏覽器上輸入路徑的方式讓應用程序的各部分相關聯。瀏覽器

HTTP中間件

Route::get( '/' function  () { 
    return  'Hello World'
});

        應用程序可受到中間件的保護——中間件會處理分析和過濾服務器上的HTTP請求。你能夠安裝中間件,用於驗證註冊用戶,並避免如跨站腳本(XSS)或其它的安全情況的問題。緩存

<?php 
namespace  App/Http/Middleware; 
use  Closure; 
class  OldMiddleware { 
   public  function  handle( $request , Closure  $next ) { 
     if  ( $request ->input( 'age' ) <= 200) { 
          return  redirect( 'home' ); 
    
     return  $next ( $request );
   }
}

緩存

        你的應用程序可獲得一個健壯的緩存系統,經過對其進行調整,可讓應用程序的加載更加快速,這能夠給你的用戶提供最好的使用體驗。安全

Cache::extend( 'mongo' function ( $app ) { 
    return  Cache::repository( new  MongoStore);
});

身份驗證

        安全是相當重要的。Laravel自帶對本地用戶的身份驗證,並可使用「remember」 選項來記住用戶。它還可讓你例如一些額外參數,例如顯示是否爲活躍的用戶。服務器

if  (Auth::attempt([ 'email'  =>  $email 'password'  =>  $password 'active'  => 1 ],  $remember )) { 
    // The user is being remembered... 
}

各類集成

        Laravel Cashier能夠知足你要開發支付系統所須要的一切需求。除此以外,它還同步並集成了用戶身份驗證系統。因此,你再也不須要擔憂如何將計費系統集成到開發當中了。架構

$user  = User::find(1);
$user ->subscription( 'monthly' )->create( $creditCardToken );

任務自動化

Elixir是一個可以讓咱們使用Gulp定義任務的Laravel程序接口,咱們可使用Elixir定義可精簡CSS 和JavaScript的預處理器。app

elixir( function (mix) { 
    mix.browserify( 'main.js' );
  });

加密

        一個安全的應用程序應該作到可把數據進行加密。使用Laravel,能夠啓用OpenSSL安全加密算法AES-256-CBC來知足你全部的需求。另外,全部的加密值都是由檢測加密信息是否被改變的驗證碼所簽署的。

use  Illuminate/Contracts/Encryption/DecryptException; 
try 
    $decrypted  = Crypt::decrypt( $encryptedValue );
catch  (DecryptException  $e ) { 
    // 
}

事件處理

        應用程序中事件的定義、記錄和聆聽都很是迅速。EventServiceProvider事件中的listen包含記錄在你應用程序上全部事件的列表。

protected  $listen  = [
   'App/Events/PodcastWasPurchased'  => [ 
      'App/Listeners/EmailPurchaseConfirmation' ,
   ],
];

分頁

在Laravel中分頁是很是容易的由於它可以根據用戶的瀏覽器當前頁面生成一系列連接。

<?php 
namespace  App/Http/Controllers; 
use  DB; 
use  App/Http/Controllers/Controller; 
class  UserController  extends  Controller { 
   public  function  index() { 
     $users  = DB::table( 'users' )->paginate(15);
     return  view( 'user.index' , [ 'users'  =>  $users ]);
   }
}

對象關係化映射(ORM)

Laravel包含一個處理數據庫的層,它的對象關係化映射被稱爲Eloquent。另外這個也適用於PostgreSQL。

$users  = User::where( 'votes' '>' , 100)->take(10)->get();
foreach  ( $users  as  $user ) { 
   var_dump( $user ->name);
}

單元測試

單元測試的開發是一個耗費大量時間的任務,可是它倒是保證咱們的應用程序保持正常工做的關鍵。Laravel中可以使用PHPUnit執行單元測試。

<php 
use  Illuminate/Foundation/Testing/WithoutMiddleware; 
use  Illuminate/Foundation/Testing/DatabaseTransactions; 
class  ExampleTest  extends  TestCase { 
   public  function  testBasicExample() { 
     $this ->visit( '/' )->see( 'Laravel 5' )->dontSee( 'Rails' );
   }
}

待辦事項清單

Laravel提供在後臺使用待辦事項清單(to do list)處理複雜、漫長流程的選擇。它可讓咱們異步處理某些流程而不須要用戶的持續導航。

Queue :: push (  new   SendEmail ( $ message ));
相關文章
相關標籤/搜索