shkm/jsend

该软件包已被弃用且不再维护。作者建议使用 NanneHuiges/JSend 软件包。

JSend 规范的简单 PHP 实现。

v5.0.0 2021-04-02 15:16 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:24:27 UTC


README

Build Status
Code Climate
Issue Count

Total Downloads

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 等)。您需要安装 dockerdocker-compose,但不需要 PHPcomposer

设置您的安装

运行 ./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