PHP code example of uniondrug / middleware
1. Go to this page and download the library: Download uniondrug/middleware library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
uniondrug / middleware example snippets
return [
'default' => [
...
'providers' => [
\Uniondrug\Middleware\MiddlewareServiceProvider::class,
],
...
],
];
/**
* middleware.php
*
*/
return [
'default' => [
// 应用定义的中间件
'middlewares' => [
'test1' => \App\Middlewares\Test1Middleware::class,
'test2' => \App\Middlewares\Test2Middleware::class,
'test3' => \App\Middlewares\Test3Middleware::class,
'test4' => \App\Middlewares\Test4Middleware::class,
'test5' => \App\Middlewares\Test5Middleware::class,
],
// 全局中间件,会应用在全部路由,优先级在应用定义之前
'global' => [
'cors', 'cache', 'favicon', 'trace',
],
// 全局中间件,会应用在全部路由,优先级在应用定义之后
'globalAfter' => [
'powered',
],
// 以下是中间件用到的配置参数
'cache' => [
'lifetime' => 60,
],
'powered_by' => 'Un',
],
];
/**
* Test1Middleware.php
*
*/
namespace App\Middlewares;
use Phalcon\Http\RequestInterface;
use Uniondrug\Middleware\DelegateInterface;
use Uniondrug\Middleware\Middleware;
class Test1Middleware extends Middleware
{
public function handle(RequestInterface $request, DelegateInterface $next)
{
echo "Test1.0\n";
$response = $next($request);
echo "Test1.1\n";
return $response;
}
}
/**
* IndexController.php
*
*/
namespace App\Controllers;
use Phalcon\Mvc\Controller;
/**
* Class IndexController
*
* @package App\Controllers
* @Middleware('test1')
*/
class IndexController extends Controller
{
public function beforeExecuteRoute($dispatcher)
{
$this->middlewareManager->bind($this, ['test2']);
$this->middlewareManager->bind($this, ['test3'], ['only' => ['indexAction']]);
}
/**
* @Middleware('test4', 'test5')
*/
public function indexAction()
{
//var_dump($this->middlewareManager);
return $this->response->setJsonContent(['msg' => memory_get_usage()]);
}
public function showAction()
{
return $this->response->setJsonContent(['msg' => 'show']);
}
}
class Test1Middleware extends Middleware
{
public function handle(RequestInterface $request, DelegateInterface $next)
{
echo "Test1.0\n"; // 在 $next($request) 之前的代码,将在请求被最终Controller::Action处理之前调用
$_POST['added_var'] = 'new value'; // 改写请求参数,往Request中添加一个新的POST参数。
// 这样下一个Middleware乃至Controller::Action中使用 `$request` 对象的 `getPost()` 方法就能获取到新的参数值了。
$response = $next($request);
echo "Test1.1\n"; // 在 $next($request) 之后的代码,将在请求被最终Controller::Action处理之后调用
return $response;
}
}