shkm / jsend
Requires
- php: >=7.4
- ext-json: *
Requires (Dev)
- ext-xdebug: *
- phpunit/phpunit: ^9
README
JSend
JSend 规范的简单 PHP 实现。
使用方法
use JSend\JSendResponse;
新的响应
$success = new JSendResponse('success', $data); $fail = new JSendResponse('fail', $data); $error = new JSendResponse('error', $data, 'Not cool.', 9001);
$success = JSendResponse::success($data); $fail = JSendResponse::fail($data); $error = JSendResponse::error('Not cool.', 9001, $data);
注意:如果状态无效或者创建一个没有消息的 error
,将抛出 InvalidJSendException
。
将 JSendResponse 转换为 JSON
__toString()
被覆盖以自动编码 JSON。
$json = $success->encode(); $json = (string) $success;
由于 JSendResponse 实现 JsonSerializable
接口,您可以直接在 json_encode
中使用该对象。
json_encode($success);
设置标志
如果需要,可以设置标志。
$success->setEncodingOptions(\JSON_PRETTY_PRINT | \JSON_BIGINT_AS_STRING); $json = $success->encode();
将 JSON 转换为 JSendResponse
try { $response = JSendResponse::decode($json); } catch (InvalidJSendException $e) { echo "You done gone passed me invalid JSend."; }
将 JSON 作为 HTTP 响应发送
这会将 Content-Type
标头设置为 application/json
并输出 JSON。
$jsend = new JSendResponse('success', $data); $jsend->respond();
获取信息
$isSuccess = $response->isSuccess(); $isError = $response->isError(); $isFail = $response->isFail(); $status = $response->getStatus(); $data = $response->getData(); $array = $response->asArray();
此外,您可以在错误上调用以下方法。如果状态不是 error
,则抛出 BadMethodCallException
,因此请先进行检查。
if ($response->isError()) { $code = $response->getErrorCode; $message = $response->getErrorMessage; }
开发
为了您的方便,提供了一个包含正确依赖项(php、composer)的 dockerfile。请使用这些来运行各种操作(composer、phpunit 等)。您需要安装 docker
和 docker-compose
,但不需要 PHP
或 composer
。
设置您的安装
运行 ./install.sh
将在开发容器中为您运行 composer。它使用 .user.env
文件进行一些魔法操作,确保您以本地用户身份运行所有操作。这将有助于访问生成的文件。
如果想要执行任何 composer
操作,如 composer update
,可以运行 ./bin/composer
。如果每次都花费很长时间,可以使用 ./bin/shell
进入 shell。这确保您始终在正确的环境中运行构建(或测试)命令。
测试和代码质量
在 /bin
中有一些脚本来帮助您测试问题
- codeclimate:运行各种 codeclimate 检查,如 phpcodesniffer、phan 等。请参阅
.codeclimate.yml
- phpunit:运行测试套件
这些测试也在 CI 上运行,但在您进行 PR 之前请确保它们没有失败。
备注
- 请注意,
composer.lock
文件被忽略。这是库的标准做法。 - 当前的测试是在 php 7.2 上进行的,但同样适用于 7.3 和 7.4。
致谢
该库由 Jamie Schembri 编写。它在 2015 年 12 月转移到了当前账户 Nanne Huiges。