jeyroik / extas-protocols
此包的最新版本(3.0.0)没有可用的许可信息。
Extas 协议包
3.0.0
2020-08-24 10:06 UTC
Requires
Requires (Dev)
README
描述
用于支持Extas协议的包。
使用方法
创建协议
namespace my\extas\protocols; use extas\components\protocols\Protocol;use Psr\Http\Message\RequestInterface; class JsonProtocol extends Protocol { public function __invoke(array &$args = [], RequestInterface $request = null) : void{ { $json = file_get_contents('php://input'); if ($json) { $jsonData = json_decode($json, true); $args = array_merge($args, $jsonData); } } }
安装协议
在Extas兼容配置中
{
"protocols": [
{
"name": "json",
"title": "JSON protocol",
"description": "JSON protocol, extracting from php://input",
"accept": ["application/json", "json"],
"class": "my\\extas\\protocols\\JsonProtocol"
}
]
}
安装
/vendor/bin/extas i
应用
use extas\interafces\protocols\IProtocol; use extas\components\SystemContainer; /** * @param Psr\Http\Message\RequestInterface $request * @param Psr\Http\Message\ResponseInterface $response * @param array $args */ function ($request, $response, $args) { /** * @var $protocols IProtocol[] */ $protocols = $this->protocolRepository()->all([ IProtocol::FIELD__ACCEPT => [$request->getHeader('ACCEPT'), '*'] ]); foreach ($protocols as $protocol) { $protocol($args, $request); } print_r($args); // содержит данные из json }