dconco/phpslides-status

此包已被废弃,不再维护。作者建议使用 phpslides/status 包。

处理 PhpSlides API 的 PhpSlides HTTP 状态响应

0.0.1 2024-07-01 16:54 UTC

This package is auto-updated.

Last update: 2024-08-22 16:04:21 UTC


README

安装

在创建您的 PhpSlides 项目后,导航到项目目录并使用以下命令安装 PhpSlides-Status 包:

composer require dconco/phpslides-status

或者直接从发布版本下载 zip 文件,解压文件并将其添加到您的 PhpSlides 项目文件夹中。

下载 phpslides-status zip 文件

文档

使用 Status() 类函数

为 API 响应创建一个 Status 实例。这用于 PhpSlides API 控制器类

<?php

namespace PhpSlides\Controller\Api;

use PhpSlides\Controller\Controller;
use PhpSlides\Status;

final class UserController extends Controller
{
   public function __invoke() {
      $status = new Status();
   }
}

?>

您可以将字符串值传递给 Status() 函数参数,默认使用 Response::JSON,通过 Response 命名空间 PhpSlides\Http\Response

以 JSON 格式返回值。参数包括此枚举值类型

use PhpSlides\Http\Response;

Response::JSON;
Response::HTML;
Response::CSV;
Response::XML;

new Status(Response::JSON);

如果参数包含除 enum ResponseType 值 之外的任何值,则将返回默认值数组,这不被推荐。

一些函数和方法

success() 方法

使用 success() 方法返回默认成功消息。

<?php

use PhpSlides\Status;
use PhpSlides\Http\Response;

final class UserController extends Controller {
   public function __invoke() {
      $status = new Status(Response::JSON);
      return $status->success();
   }
}

?>

success() 方法接受两个参数,$data 用于渲染和 $status,它是状态码。

第一个参数可以是数组或字符串,第二个参数是来自 StatusCode 静态类的整数。它返回 Response::<type>,这是在 Status() 函数中传递的参数。

use PhpSlides\StatusCode;

$user = [
    "name": "John Doe",
    "email": "john@doe.com"
];
return $status->success($user, StatusCode::OK);

error() 方法

使用 error() 方法返回错误 API 消息。它也接受两个参数,第一个是数组或字符串,第二个是用于设置 http_response_code 的整数,默认值为 StatusCode::INTERNAL_SERVER_ERROR

它也返回 Response::<type>

return $status->error('User not Found', StatusCode::NOT_FOUND);

success() 和 error() 方法的完整代码

如果没有指定 Status() 中的参数,默认返回 Response::JSON,用于以 JSON 格式返回响应

<?php

namespace PhpSlides\Controller\Api;

use PhpSlides\Controller\Controller;
use PhpSlides\Http\Response;
use PhpSlides\StatusCode;
use PhpSlides\Status;

final class UserController extends Controller
{
   public function __invoke(int $user_id) {
      $status = new Status();

      if ($user_id === 1) {
         $user = [
             'name': 'John Doe',
             'email': 'john@doe.com',
             'user_id': $user_id
         ];

         $response = $status->success($user); // by default the second parameter is `StatusCode::OK`
      } else {
         // not found message
         $response = $status->error("User user_id=$user_id is not found", StatusCode::NOT_FOUND);
      }

      return $response; // return message as a JSON format `Response::JSON`
   }
}

?>

命名空间和 Status 接口

命名空间

\PhpSlides\Status()

\PhpSlides\StatusCode

\PhpSlides\StatusText

\PhpSlides\Http\Response

\PhpSlides\Enums\ResponseType

\PhpSlides\Interface\StatusInterface

\PhpSlides\Interface\ResponseInterface

\PhpSlides\Exception\ApiException()

\PhpSlides\Exception\ExceptionInterface

Status() 接口方法

__construct(string $response = Response::JSON)

public function getStatus (): int;

public function getStatusText (): string;

public function getMessage (): mixed;

public function get (): string|array;

public function getJson (): string;

public function set (mixed $data, int $status = StatusCode::NO_CONTENT, string $statusText = StatusText::NO_CONTENT ): void;

public function setStatus (int $status): void;

public function setStatusText (string $statusText): void;

public function setMessage (mixed $message): void;

public function error (array|string $data, int $status = StatusCode::INTERNAL_SERVER_ERROR): string|array;

public function success (array|string $data, int $status = StatusCode::OK): string|array;

Response{} 接口方法

const JSON = ResponseType::JSON;

const HTML = ResponseType::HTML;

const CSV = ResponseType::CSV;

const XML = ResponseType::XML;

public static function json(array $data = [], int $status = StatusCode::OK): string;

public static function html(array $data = [], int $status = StatusCode::OK): string;

public static function csv(array $data = [], int $status = StatusCode::OK): string;

public static function xml(array $data = [], int $status = StatusCode::OK): string;

public static function array(array $data = [], int $status = StatusCode::UNSUPPORTED_MEDIA_TYPE): array;

enum ResponseType{} 接口

const JSON = 'JSON';

const HTML = 'HTML';

const CSV = 'CSV';

const XML = 'XML';