码迷,mamicode.com
首页 > 其他好文 > 详细

laravel 拾遗 中间件

时间:2014-09-17 23:13:12      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:http   io   ar   for   div   art   sp   cti   log   

Problem

You want to add middleware to your application but don‘t know where to begin.

 
 

Solution

Create a simple middleware class.

 

Step 1 - Create the class

<?php namespace MyApp;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\HttpKernelInterface;

class Middleware implements HttpKernelInterface {

  protected $app;

  /**
   * Constructor
   */
  public function __construct(HttpKernelInterface $app)
  {
    $this->app = $app;
  }

  /**
   * Handle the request, return the response
   *
   * @implements HttpKernelInterface::handle
   *
   * @param  \Symfony\Component\HttpFoundation\Request  $request
   * @param  int   $type
   * @param  bool  $catch
   * @return \Symfony\Component\HttpFoundation\Response
   */
  public function handle(Request $request,
    $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
  {
    // 1) Modify incoming request if needed
    ...

    // 2) Chain the app handler to get the response
    $response = $this->app->handle($request, $type, $catch);

    // 3) Modify the response if needed
    ...

    // 4) Return the response
    return $response;
  }
}
?>

Step 2 - Register the Middleware Class

You need to do this in the register() method of a service provider.

App::middleware(‘MyApp\Middleware‘);
 

Alternatively you can install a simple package I created which allows you to register your middleware inapp/start/preboot.php. See Laravel-Hooks for details.

 
 

Discussion

The above class doesn‘t do anything.

 

But it‘s a good skeleton to start with. Obviously, you‘ll need to change the namespace and classname to fit your application.

Then you may want to try logging something to make sure it works. You can update the handle() method of your class as specified below.

// In step #1) Modify incoming request if needed

// Log to a file. Since app/start/global.php hasn‘t been hit
// yet the Log facade isn‘t set to log to a file yet. So just
// write directly to a file.
$logfile = storage_path().‘/logs/laravel.log‘;
error_log("Middleware entry\n", 3, $logfile);

// In step #3) Modify reponse if needed

// Log to a file. We‘re safe to use the Log facade now that
// it should be set up in app/start/global.php
Log::info("Middleware exit");

Now you can examine your app/storage/logs/laravel.log file to see that your middleware works.

laravel 拾遗 中间件

标签:http   io   ar   for   div   art   sp   cti   log   

原文地址:http://www.cnblogs.com/zhepama/p/3978152.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!