定制 gosuccess/enhance-api 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

gosuccess/enhance-api

Composer 安装命令:

composer require gosuccess/enhance-api

包简介

Modern PHP API client for the Enhance control panel API with PHP 8.4 features

README 文档

README

A modern, dependency-free PHP client for the Enhance control panel API.

  • Vanilla – zero runtime dependencies, only the curl and json extensions.
  • Complete – all 470 operations across 33 resources, covering the full Enhance API (v12.23.0).
  • Type-safe – typed DTOs, enums, and resource methods built on PHP 8.4 features (property hooks, readonly, backed enums).

Requirements

  • PHP 8.4 or higher
  • ext-curl, ext-json

Installation

composer require gosuccess/enhance-api

Quick start

use GoSuccess\Enhance\Enhance;

$enhance = Enhance::create(
    host: 'https://cp.example.com/api',
    orgId: 'your-organization-uuid',
    accessToken: 'your-access-token',
);

// Read the API version
echo $enhance->install->orchdVersion();

// List the organization's plans (uses the configured organization id)
$plans = $enhance->plans->getPlans();

Every API section is exposed as a resource on the Enhance object, e.g. $enhance->websites, $enhance->servers, $enhance->orgs, $enhance->plans, $enhance->subscriptions, $enhance->domains, $enhance->dns, $enhance->emails, $enhance->backups, $enhance->ssl, and so on.

Documentation & examples

  • docs/ – one reference page per resource, listing every method with its route, parameters, and a usage example.
  • examples/ – runnable scripts (account overview, error handling, a full create/read/delete lifecycle).

Working with DTOs

Request bodies are typed DTOs; only the properties you set are sent. Responses are hydrated into DTOs automatically.

use GoSuccess\Enhance\DTO\NewWebsite;
use GoSuccess\Enhance\Enum\PhpVersion;
use GoSuccess\Enhance\Enum\WebsiteKind;

$website = new NewWebsite();
$website->domain = 'example.test';
$website->phpVersion = PhpVersion::Php84;

$created = $enhance->websites->createWebsite($website, WebsiteKind::Normal);

echo $created->id; // NewResourceUuid::$id

By default, properties left as null are omitted from the request body. To clear a field via an update endpoint, mark it with setNull() so it is sent as an explicit null:

$update = new UpdateWebsite();
$update->setNull('phpVersion');

$enhance->websites->updateWebsite($update, $websiteId);

The organization id

Most endpoints are scoped to an organization. The orgId you pass to Enhance::create() is used by default, so you can omit it. Pass it explicitly to target a different organization (e.g. as an MO managing customers):

$enhance->websites->getWebsites();                        // configured organization
$enhance->websites->getWebsites(orgId: 'other-org-uuid'); // another organization

Pagination

Listing endpoints accept offset/limit. Paginator::items() transparently walks every page for you:

use GoSuccess\Enhance\Util\Paginator;

foreach (Paginator::items(
    fn (int $offset, int $limit) => $enhance->websites->getWebsites(offset: $offset, limit: $limit),
) as $website) {
    echo $website->id . "\n";
}

Configuration

Enhance::create() covers the common case. For finer control, build a Configuration and pass it to the constructor:

use GoSuccess\Enhance\Enhance;
use GoSuccess\Enhance\Client\Configuration;

$config = new Configuration('https://cp.example.com/api', 'org-uuid', 'access-token');
$config->timeout = 60;     // request timeout in seconds (default 30)
$config->maxRetries = 3;   // retries for transient failures (default 2)
$config->verifySsl = true; // TLS verification (enabled by default)

$enhance = new Enhance($config);

Error handling

Non-2xx responses throw a typed exception. All of them extend GoSuccess\Enhance\Exception\ApiException, which carries the status code and response body as context.

use GoSuccess\Enhance\Exception\ApiException;
use GoSuccess\Enhance\Exception\NotFoundException;

try {
    $plan = $enhance->plans->getPlan(123);
} catch (NotFoundException $e) {
    // 404
} catch (ApiException $e) {
    echo $e->getMessage();
    $context = $e->getContext(); // ['status' => int, 'body' => mixed]
}
Status Exception
400 BadRequestException
401 UnauthorizedException
403 ForbiddenException
404 NotFoundException
409 ConflictException
429 RateLimitException
5xx ServerException
transport error RequestException

Custom HTTP client

The client talks to the API through GoSuccess\Enhance\Contract\HttpClientInterface. The default implementation (ApiClient) uses cURL, but you can inject your own — useful for testing or custom transports:

$enhance = new Enhance($config, $myHttpClient);

Architecture

src/
  Enhance.php          Entry point, one resource per API section
  Client/              Configuration and the cURL ApiClient
  Contract/            HttpClientInterface
  Http/                Immutable Response
  Resource/            33 resources (470 methods)
  DTO/                 360 hydratable data transfer objects
  Enum/                66 enums + HttpMethod/HttpStatusCode
  Exception/           Typed exception hierarchy
  Base/                AbstractResource, AbstractDto
  Attribute/           ArrayItemType

Development

The Resource, DTO, and Enum classes were originally derived from the Enhance OpenAPI specification (v12.23.0) and are now maintained by hand.

composer cs:fix       # apply coding standards
composer analyse      # PHPStan
composer test         # PHPUnit
composer check        # all of the above

License

MIT

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-06-22

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固