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
));
});
|
Laravel拥有相似于Ruby on Rails的,快速、高效的路由系统。它可让用户经过在浏览器上输入路径的方式让应用程序的各部分相关联。浏览器
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
]);
}
}
|
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 ));