专栏首页竹清助手Love beautiful code? We do too.

Love beautiful code? We do too.

Love beautiful code? We do too.

<?phpclass Idea extends Eloquent {

	/**
	 * Dreaming of something more?
	 *
	 * @with  Laravel
	 */
	 public function create()
	 {
	 	// Have a fresh start...	 }}

为什么Laravel会成为最成功最流行的PHP框架

Laravel是一个有着美好前景的年轻框架,它的社区充满着活力,同时提供了完整而清晰的文档,而且为快速、安全地开发现代应用提供了必要的功能。

2011年,Taylor Otwell首次将Laravel带给这个世界,彼时,Laravel就是一个全新且现代的框架。Laravel基于MVC架构,可以满足诸如事件处理、用户身份验证等各种需求,同时通过包管理实现模块化和可扩展的代码,并且对数据库管理有着健壮的支持。

不管是专家还是新手,一旦接触到Laravel,都会有相见恨晚之感——这正是你在为PHP项目寻找的框架。本文我们将讨论为什么Laravel会成为最成功最流行的PHP框架。

模块化&可扩展性

Laravel是模块化和可扩展的,你可以在包含超过5500个程序包的Packalyst中找到你想要添加的任何代码。

微服务&API

Lumen是一个由Laravel衍生的专注于性能的微框架。使用Lumen提供的高性能API你可以更加简单快速地开发微型项目。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中间件

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

Laravel可以通过中间件对应用进行保护——中间件会处理分析和过滤到达服务器的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);
    }
}

缓存

Laravel提供了健壮的缓存系统,使用缓存可以让应用加载地更加快速,从而带来更好的用户体验。

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...
 }

集成Stripe

Laravel Cashier可以满足你开发支付系统过程中所需要的任何需求。除此之外,它还同步并集成了用户身份验证系统。所以,你不再需要担心如何将计费系统集成到开发中了。

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

任务自动化

Elixir是一个让我们可以使用Gulp定义任务的Laravel API,我们可以使用Elixir定义预处理器来压缩CSS 和JavaScript。

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) {
    //
}

事件处理

Laravel应用中对事件的定义、记录和监听都非常便捷。服务提供者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');
    }
}

待办事项清单(Queue)

Laravel提供了在后台使用待办事项清单(to do list)处理复杂、漫长流程的选择,好吧,其实就是队列,队列可以让我们异步处理某些流程而不需要用户在加载页面时长时间的等待。

Queue::push ( new SendEmail ( $ message ));

英文原文:Reasons why Laravel is the best framework for PHP?

项目地址:https://github.com/laravel/laravel

果拾网

中国最大的IT技能学习平台

本文分享自微信公众号 - 竹清助手(zhuqing_help),作者:竹清老师

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-01-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Laravel 5 系列入门教程(一)【最适合中国人的 Laravel 教程】

    2. http://www.golaravel.com/laravel/docs/5.0/

    貟王軍
  • 读《黑客与画家》摘录

    貟王軍
  • 如何构建高扩展性网站?

      本书从多个方面围绕高扩展性提出了50条建议,一个高扩展性的网站会随着业务的发展、用户的增加,自由的扩展架构,从而轻松的应付网站的快速发展。下面看看本书的具体...

    貟王軍
  • Laravel 7 正式发布,一起来看看有哪些重要更新吧

    Laravel 7 版本于 2020 年 3 月 3 日正式发布,本次版本更新包含了很多新特性:

    学院君
  • 为什么 Laravel 会成为最成功的 PHP 框架?

    Laravel是一个有着美好前景的年轻框架,它的社区充满着活力,相关的文档和教程完整而清晰,并为快速、安全地开发现代应用程序提供了必要的功能。在近几年对PHP框...

    wangxl
  • Laravel 5.0 发布, 海量新特性!!

    译注: 期待 Laravel 5.0 已经很久很久了, 之前跳票说要到今年一月份发布. 从一月份就一直在刷新官网和博客, 始终没有更新的消息, 前几天终于看到官...

    小李刀刀
  • [PHP] Laravel框架介绍、安装及配置

    Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的...

    泰坦HW
  • Laravel —— 路由的学习笔记

    最近的工作非常忙,公司从项目紧张起来之后,一直在实施996加班制度,工作强度虽然如此,但是任然要利用有限的空余时间来学习。之前都有在前端方面的学习,所以一直想学...

    Originalee
  • Why Laravel? 40 Must-Have Laravel Tools and Resources

    Project development is a combination of hard and soft skills. As a client, your ...

    用户6459740
  • 关于 Laravel 应用性能优化的几点建议

    很多人吐槽 Laravel 框架性能不行,在我看来,除了每次新请求应用启动阶段由于 Laravel 框架本身的设计,导致服务容器加载服务确实增加了一些耗时外(不...

    学院君

扫码关注云+社区

领取腾讯云代金券