kubinyete/template-sdk-php
Composer 安装命令:
composer create-project kubinyete/template-sdk-php
包简介
Base template for generating highly optimized webservice SDKs
README 文档
README
What?
This project provides a basic quick-start template for creating Webservice clients.
Why?
Instead of repeating the same things over and over again for every webservice client that your application needs, this template provides a quick and easy solution for building and mapping endspoints to your client, providing a structured approach for endpoint representation, environment mapping and error handling.
How?
To get started, just extend the base Core/Client and create your first endpoint, following the example below:
# OpenMeteoClient.php <?php namespace Kubinyete\ExampleSdkPhp; use Kubinyete\ExampleSdkPhp\Endpoint\ForecastEndpoint; use Kubinyete\ExampleSdkPhp\Exception\OpenMeteoException; use Kubinyete\ExampleSdkPhp\Client; use Kubinyete\ExampleSdkPhp\Exception\HttpException; use Kubinyete\ExampleSdkPhp\Http\Client\GuzzleHttpClient; use Kubinyete\ExampleSdkPhp\Http\Response; use Kubinyete\ExampleSdkPhp\IO\JsonSerializer; class OpenMeteoClient extends Client { public function __construct(int $version = 1) { parent::__construct( new OpenMeteoEnvironment($version), new GuzzleHttpClient(), new JsonSerializer() ); } public function forecast(): ForecastEndpoint { return ForecastEndpoint::create($this, $this); } // // @NOTE: // Dealing with errors on 200 status codes protected function responseReceived(Response $response): Response { if ($response->getParsedPath('error')) { throw new OpenMeteoException((string)$response->getParsedPath('reason'), 0, null, $response); } return $response; } // @NOTE: // Translating Client/Server errors protected function exceptionThrown(Throwable $e): void { if ($e instanceof HttpException && $e->getResponse()) { $this->responseReceived($e->getResponse()); } throw $e; } }
# ForecastEndpoint.php <?php namespace Kubinyete\ExampleSdkPhp\Endpoint; use Kubinyete\ExampleSdkPhp\Model\Forecast; use Kubinyete\ExampleSdkPhp\Model\ForecastSettings; use Kubinyete\ExampleSdkPhp\Core\Endpoint; class ForecastEndpoint extends Endpoint { protected string $location = '/forecast'; // @NOTE: // Using a more object-oriented approach using an Endpoint object. public function now(ForecastSettings $forecastSettings): Forecast { $response = $this->get($forecastSettings->jsonSerialize()); return Forecast::parse($response->getParsed()); } }
# usage.php <?php require_once __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php'; use Kubinyete\ExampleSdkPhp\Model\ForecastSettings; use Kubinyete\ExampleSdkPhp\OpenMeteoClient; use Kubinyete\ExampleSdkPhp\Exception\HttpClientException; $client = new OpenMeteoClient(); try { $forecast = $client->forecast()->now(new ForecastSettings(52.52, 13.41, true)); var_dump($forecast); } catch (HttpClientException $e) { echo "Bad request!" . PHP_EOL; echo "Message: {$e->getMessage()}" . PHP_EOL; echo "Response: {$e->getResponse()->getBody()}" . PHP_EOL; }
kubinyete/template-sdk-php 适用场景与选型建议
kubinyete/template-sdk-php 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 58 次下载、GitHub Stars 达 2, 最近一次更新时间为 2023 年 01 月 05 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 kubinyete/template-sdk-php 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 kubinyete/template-sdk-php 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 58
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 9
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: Unknown
- 更新时间: 2023-01-05