模块化和可扩展性
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的,快速、高效的路由系统。它可让用户经过在浏览器上输入路径的方式让应用程序的各部分相关联。
Route::get('/', function () { return 'Hello World'; }); HTTP中间件
应用程序可受到中间件的保护——中间件会处理分析和过滤服务器上的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->subion('monthly')->create($creditCardToken); 任务自动化
Elixir是一个可以让咱们使用 Gulp 定义任务的Laravel程序接口,咱们能够使用Elixir定义可精简CSS 和Java的预处理器。
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)处理复杂、漫长流程的选择。它可让咱们异步处理某些流程而不须要用户的持续导航。php