limingxinleo/x-phalcon-middleware
Composer 安装命令:
composer require limingxinleo/x-phalcon-middleware
包简介
a phalcon middleware component
README 文档
README
a phalcon middleware component
感谢
https://github.com/shouhuyou/phalcon-midddleware.git
安装
composer require limingxinleo/x-phalcon-middleware
配置
添加服务
<?php use Xin\Phalcon\Middleware\Mvc\Dispatcher as MvcDispatcher; use Xin\Phalcon\Middleware\Mvc\Dispatcher71 as MvcDispatcher71; $di->setShared('middlewareManager', function () { $middlewareManager = new Manager(); //注册中间件 $middlewareManager->add('test', \Tests\App\Middleware\Test1Middleware::class); $middlewareManager->add('test2', \Tests\App\Middleware\Test2Middleware::class); $middlewareManager->add('test3', \Tests\App\Middleware\Test3Middleware::class); return $middlewareManager; }); //替换默认的dispatcher $di->setShared('dispatcher', function () { if (version_compare(PHP_VERSION, '7.1', '>')) { $dispatcher = new MvcDispatcher71(); } else { $dispatcher = new MvcDispatcher(); } $dispatcher->setDefaultNamespace('Tests\App\Controllers'); return $dispatcher; });
使用
- 创建中间件
<?php namespace App\Middleware; use Xin\Phalcon\Middleware\Middleware; class Aaa extends Middleware { public function handle($request ,\Closure $next) { //在中间件中使用service if($this->request->isAjax()){ return $this->response->redirect('/login'); } //前置操作 echo __METHOD__.'<hr>'; $response = $next($request); //后置操作 echo __METHOD__.'<hr>'; return $response; } }
- 控制器中使用中间件
<?php namespace Tests\App\Controllers; use Phalcon\Mvc\Controller; class IndexController extends Controller { public function indexAction() { return $this->response->setJsonContent([ 'success' => true, 'data' => ['action' => 'index'] ]); } /** * @desc * @author limx * @return \Phalcon\Http\Response|\Phalcon\Http\ResponseInterface * @Middleware('test') */ public function testAction() { return $this->response->setJsonContent([ 'success' => true, 'data' => ['action' => 'test'] ]); } /** * @desc * @author limx * @return \Phalcon\Http\Response|\Phalcon\Http\ResponseInterface * @Middleware('test2') */ public function test2Action() { return $this->response->setJsonContent([ 'success' => true, 'data' => ['action' => 'test2'] ]); } /** * @desc * @author limx * @return \Phalcon\Http\Response|\Phalcon\Http\ResponseInterface * @Middleware('test2') * @Middleware('test3') */ public function test3Action() { return $this->response->setJsonContent([ 'success' => true, 'data' => ['action' => 'test2'] ]); } }
中间件执行顺序
中间件定义
class OneMiddleware extends Middleware
{
public function handle($request, Closure $next)
{
echo 'One1' . PHP_EOL;
$response = $next($request);
echo 'One2' . PHP_EOL;
return $response;
}
}
class TwoMiddleware extends Middleware
{
public function handle($request, Closure $next)
{
echo 'Two1' . PHP_EOL;
$response = $next($request);
echo 'Two2' . PHP_EOL;
return $response;
}
}
class ThreeMiddleware extends Middleware
{
public function handle($request, Closure $next)
{
echo 'Three1' . PHP_EOL;
$response = $next($request);
echo 'Three2' . PHP_EOL;
return $response;
}
}
class FourMiddleware extends Middleware
{
public function handle($request, Closure $next)
{
echo 'Four1' . PHP_EOL;
$response = $next($request);
echo 'Four2' . PHP_EOL;
return $response;
}
}
使用如下
/**
* Class IndexController
* @package Tests\App\Controllers
* @Middleware('sort1')
*/
class IndexController extends Controller
{
public function initialize()
{
$this->middleware->set([
'abs',
'test3'
]);
}
/**
* @Middleware('sort2')
* @Middleware('sort3')
*/
public function indexAction()
{
return $this->response->setJsonContent([
'success' => true,
'data' => ['action' => 'index']
]);
}
}
结果
'abs.start',
'test3.start',
'sort1.start',
'sort2.start',
'sort3.start',
'sort3.end',
'sort2.end',
'sort1.end',
'test3.end',
'abs.end',
limingxinleo/x-phalcon-middleware 适用场景与选型建议
limingxinleo/x-phalcon-middleware 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 4.93k 次下载、GitHub Stars 达 8, 最近一次更新时间为 2017 年 11 月 02 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「phalcon」 「phalcon-middleware」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 limingxinleo/x-phalcon-middleware 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 limingxinleo/x-phalcon-middleware 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 limingxinleo/x-phalcon-middleware 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Uniondrug Trace Client Component for uniondrug/framework
Библиотека для работы с BigQuery
A service layer implementation for Phalcon projects
Phalcon Model Generator
Phalcon extended framework. (Nucleon:App)
Web Debug bar and debugger for the Phalcon Framework
统计信息
- 总下载量: 4.93k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 8
- 点击次数: 4
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-11-02