dconco / phpslides-status
Requires
- php: >=8.2
Requires (Dev)
- phpunit/phpunit: ^11.2
README

安装
在创建您的 PhpSlides 项目后,导航到项目目录并使用以下命令安装 PhpSlides-Status 包:
composer require dconco/phpslides-status
或者直接从发布版本下载 zip 文件,解压文件并将其添加到您的 PhpSlides 项目文件夹中。
文档
使用 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';