germania-kg / middleware
PSR-15 和 PSR-7 风格中间件的集合
Requires
- php: ^7.0|^8.0
- psr/http-message: ^1.0
- psr/http-server-middleware: ^1.0
- psr/log: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.15
- php-coveralls/php-coveralls: ^2.0
- phpspec/prophecy-phpunit: ^2.0
- phpunit/phpunit: ^8.0|^9.0
Suggests
- swiftmailer/swiftmailer: The PHP Mailer of choice
This package is auto-updated.
Last update: 2024-09-19 22:25:11 UTC
README
Germania KG · Middleware
收集我们在应用程序中使用的一些有用的 PSR-15 单次和双次中间件
使用 Composer 安装
$ composer require germania-kg/middleware
LogHttpStatusMiddleware
在 $next 完成后,将 HTTP 响应的状态码和原因写入 PSR-3 日志记录器,使用 Psr\Log\LoggerInterface::info 方法。虽然这个中间件符合 PSR-15 规范,这里有一个 Slim3 示例
<?php use Germania\Middleware\LogHttpStatusMiddleware; $app = new Slim\App; $logger = new \Monolog\Logger; $middleware = new LogHttpStatusMiddleware( $logger); $app->add( $middleware );
类 LogHttpStatusMiddleware 还实现了 Psr\Log\LoggerAwareInterface
,并额外使用了 Germania\Middleware\LogLevelTrait
,因此可以这样配置日志
$middleware->setLogger($monolog) ->setLogLevel( \Psr\Log\LogLevel::INFO )
EmailExceptionMiddleware
虽然这个中间件符合 PSR-15 规范,这里有一个 Slim3 示例
<?php use Germania\Middleware\EmailExceptionMiddleware; $app = new Slim\App; $mailer_factory = function() { return Swift_Mailer::newInstance( ... ); }; $message_factory = function() { return Swift_Message::newInstance(); }; $middleware = new EmailExceptionMiddleware("My APP", $mailer_factory, $message_factory); $app->add( $middleware );
额外功能:显示异常信息
<?php use Germania\Middleware\EmailExceptionMiddleware; $middleware = new EmailExceptionMiddleware("My APP", $mailer_factory, $message_factory); try { throw new \Exception("Huh?"); } catch (\Exception $e) { echo $middleware->render( $e ); }
ScriptRuntimeMiddleware
记录从实例化到 next 中间件执行的时间。它使用 PSR-3 LoggerInterface 中描述的 info() 方法。虽然这个中间件符合 PSR-15 规范,这里有一个 Slim3 示例
<?php use Germania\Middleware\ScriptRuntimeMiddleware; $app = new Slim\App; $logger = new \Monolog\Logger; $app->add( new ScriptRuntimeMiddleware($logger) );
类 ScriptRuntimeMiddleware 还实现了 Psr\Log\LoggerAwareInterface
,并额外使用了 Germania\Middleware\LogLevelTrait
,因此可以这样配置日志
$middleware->setLogger($monolog) ->setLogLevel( \Psr\Log\LogLevel::INFO )
LogExceptionMiddleware
在 next 中间件执行过程中记录抛出的异常信息。它使用 PSR-3 LoggerInterface 中描述的 warning() 方法。虽然这个中间件符合 PSR-15 规范,这里有一个 Slim3 示例
<?php use Germania\Middleware\LogExceptionMiddleware; $app = new Slim\App; $logger = new \Monolog\Logger; $app->add( new LogExceptionMiddleware($logger) );
类 LogExceptionMiddleware 还实现了 Psr\Log\LoggerAwareInterface
,并额外使用了 Germania\Middleware\LogLevelTrait
,因此可以这样配置日志
$middleware->setLogger($monolog) ->setLogLevel( \Psr\Log\LogLevel::INFO )
开发
克隆该仓库,进入目录并安装 Composer 依赖项。
# Clone and install $ git clone https://github.com/GermaniaKG/Middleware.git <directory> $ cd <directory> $ composer install
单元测试
将 phpunit.xml.dist
复制到 phpunit.xml
并根据您的需要进行调整,或者保持不变。运行 PhpUnit 测试或 composer 脚本,例如这样
$ composer test # or $ vendor/bin/phpunit