PHPackages                             razesoldier/esi-sdk-gf - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. razesoldier/esi-sdk-gf

ActiveLibrary

razesoldier/esi-sdk-gf
======================

A SDK that used to access ESI of Serenity server

26831PHP

Since Mar 6Pushed 1y ago1 watchersCompare

[ Source](https://github.com/RazeSoldier/esi-sdk-gf)[ Packagist](https://packagist.org/packages/razesoldier/esi-sdk-gf)[ RSS](/packages/razesoldier-esi-sdk-gf/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

esi-sdk-gf
==========

[](#esi-sdk-gf)

用于访问晨曦服务器ESI的SDK

安装
--

[](#安装)

```
composer require razesolder/esi-sdk-gf
```

兼容性
---

[](#兼容性)

本库设计在PHP 7.4和8.0版本上运行

功能
--

[](#功能)

- **提供一个访问令牌获取器**
- **ESI各种API和对应的结果模型类**

使用
--

[](#使用)

### ESI分页

[](#esi分页)

有些接口可以分页。你可以通过检查API实现类有没有实现`Pageable`接口来判断支不支持分页。

在调用ESI后使用`$api->getMaxPages()`获得总页数。在调用ESI前使用`$api->setPage(2)`设置此次请求的页数。

例如：

```
use RazeSoldier\SerenityEsi\Api\Assets\CharacterAssets;

$request = CharacterAssets::latest(1000);
$request->setAccessToken('xxx');
$request->get();
$maxPage = $request->getMaxPages(); // int(5) 获得总页数

$otherRequest = CharacterAssets::latest(1000);
$otherRequest->setAccessToken('xxx');
$otherRequest->setPage(4); // 设置页数
```

### 使用访问令牌获取器

[](#使用访问令牌获取器)

本库提供了一个访问令牌获取器用来根据刷新令牌和Scope来查询访问令牌

例如：

```
use RazeSoldier\SerenityEsi\Api\Login\AccessTokenGetter;

$refreshToken = 'aaabbbccc';
$scopes = ['esi-characters.read_contacts.v1'];
$getter = AccessTokenGetter::newInstance($refreshToken, $scopes);
$model = $getter->get(); // AccessTokenGetter::get()返回一个AccessToken模型对象
var_dump($model->refresh_token); // string('aaabbbccc')
var_dump($model->access_token); // string('adadcaeaxz1')
```

### 使用ETag来检查HTTP缓存

[](#使用etag来检查http缓存)

本库允许你选择使用或不使用ETag来检查HTTP缓存。

如果你选择使用ETag来检查HTTP缓存，本库提供了`EsiApi::getETag()`方法 来获得调用一个ESI后，其响应的etag值。你可以在后续请求里，通过`EsiBase::setETag()`方法 在该次请求里使用你在上一个请求获得的etag值。 调用`EsiApi::get()`后，你可以通过`EsiBase::resourceIsNotModified()`来检查服务器的资源是否变更； 如果返回`TRUE`，说明资源未变更，反之亦然。

注意：你应该在你的程序里负责编写数据缓存逻辑，本库没有提供数据缓存服务，只提供检查HTTP缓存的功能。 （在使用`EsiBase::setETag()`方法后的请求里，如果资源未变更，`get()`将返回一个NULL值）

例如：

```
use RazeSoldier\SerenityEsi\Api\Character\CharacterPublicInformation;

$request = CharacterPublicInformation::latest(1000);
$request->get();
$etag = $request->getETag(); // 必须在调用get()后调用getETag()

$otherRequest = CharacterPublicInformation::latest(1000);
$otherRequest->setETag($etag); // 在get()前调用setETag()才会在本次请求检查HTTP缓存
$resp = $otherRequest->get();

var_dump($resp); // NULL
var_dump($otherRequest->resourceIsNotModified()); // true
```

### ESI错误速率限制

[](#esi错误速率限制)

ESI没有速率限制，但有错误速率限制。即在某个窗口期内失败的查询达到某个阀值就会触发，触发后所有的ESI端口会返回420响应。 参见 [1](https://developers.eveonline.com/blog/article/error-limiting-imminent)和 [2](https://developers.eveonline.com/blog/article/esi-error-limits-go-live)

对于国服ESI，错误速率限制为每分钟50次。欧服ESI为每分钟100次。

你可以在调用API后（`$api->get()`）使用`$api->getEsiErrorLimitRemain()`获得剩余的次数和`$api->getEsiErrorLimitReset()`距离下次刷新次数还有多久

许可证
---

[](#许可证)

该程序是开源的。你可以根据自由软件基金会发布的GNU通用公共许可证版本2（或更高的版本）的条款 重新分发和/或修改它。
分发该程序是希望它会有用，但没有任何保证。甚至没有对适销性或特定用途适用性的暗示保证。
你应该已经与该程序一起收到了GNU通用公共许可证的副本。

架构
--

[](#架构)

*(下面列出的类名均在`RazeSoldier\SerenityEsi`名字空间下)*
本库以`EsiService`为中心，可以从这个核心类使用到本库所有的API。

或者你也可以选择具体的API实现。具体API实现位于`RazeSoldier\SerenityEsi\Api`名字空间下。

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance35

Infrequent updates — may be unmaintained

Popularity17

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity15

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/e6a0b80d2fbb999196ae00713aa01dd5d9a07e89790df4960e1f9616baf969c2?d=identicon)[RazeSoldier](/maintainers/RazeSoldier)

---

Top Contributors

[![RazeSoldier](https://avatars.githubusercontent.com/u/29511518?v=4)](https://github.com/RazeSoldier "RazeSoldier (44 commits)")

---

Tags

eveonline

### Embed Badge

![Health badge](/badges/razesoldier-esi-sdk-gf/health.svg)

```
[![Health](https://phpackages.com/badges/razesoldier-esi-sdk-gf/health.svg)](https://phpackages.com/packages/razesoldier-esi-sdk-gf)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
