zolli / phabricator-php-api
Phabricator conduit 应用程序的 PHP 实现
Requires
- php: >=5.6
- buildr/foundation: 0.2.*
Requires (Dev)
- apigen/apigen: 4.*
- buildr/test-tools: 1.*
- pdepend/pdepend: 2.*
- phing/phing: 2.*
- phploc/phploc: 2.*
- phpunit/phpunit: 5.*
- sebastian/phpcpd: 2.*
- squizlabs/php_codesniffer: 2.*
README
---
Phabricator PHP API (Conduit 客户端)
这是一个基于 PHP 的 Phabricator API 客户端。 Phabricator 是一个开源的软件工程平台,用 PHP 构建,它有一个非常不错的 API,称为 Conduit。有关所有可用端点和方法名称,请参阅 live Phabricator 实例中的 Conduit 应用程序。
基本有用功能列表
- 完全实现了所有当前 API 端点
- 能够制作自定义客户端实现
- 每个端点都有自定义处理类
安装
使用 composer
在您的项目内运行此命令
composer require zolli/phabricator-php-api
或将此依赖手动粘贴到您的 composer.json 中
{ "require": { "zolli/phabricator-php-api": "2.0.*" } }
文档
初始化
//Initialization the instance $api = new \Phabricator\Phabricator('http://phabricator.example.com', 'cli-exmapletoken')
API 现在已准备好使用。此类使用魔术方法代理调用到适当的端点处理程序。Phabricator 方法应如下所示: project.query
。在此包中分为两部分。
第一部分是端点(例如此例中的 Project
)和方法(query
);
使用此示例,调用如下所示
$result = $api->Project('query', ['status' => 'status-open']);
在此示例中,调用了 /api/project.query
API,并传递了 status
参数。
使用自定义客户端
此包的 API 允许您制作自定义 API 客户端,这些客户端可以为您运行请求。所有客户端都应该实现 Phabricator\Client\ClientInterface
接口。
自定义客户端应以两种不同方式注入。
通过构造函数注入
$myClient = \Vendor\Package\MyAwesomeApiClient(); $api = new \Phabricator\Phabricator('http://phabricator.example.com', 'cli-exmapletoken', $myClient);
或者您可以使用 Phabricator::setClient(ClientInterface $client)
方法。
$myClient = \Vendor\Package\MyAwesomeApiClient(); $api = new \Phabricator\Phabricator('http://phabricator.example.com', 'cli-exmapletoken'); $api->setClient($myClient);
自定义端点处理程序
处理程序是各种处理端点方法执行和后处理的类。默认情况下,所有 API 端点都有处理程序,但只有默认处理程序不执行任何预处理或后处理。
例如,自定义处理程序可以在使用 file.upload
或 file.download
方法时读取和写入文件。
要实现这一点,创建一个实现 \Phabricator\Endpoints\EndpointInterface
并扩展 \Phabricator\Endpoints\BaseEndpoint
类的类,然后您就可以开始了。
BaseEndpoint
提供了一个 defaultExecutor()
方法,当端点方法没有特定执行器时将执行。
创建自定义执行器方法时,将使用这些方法在调用端点方法时。
查看 BaseEndpoint
和任何端点处理程序以获取更多信息。
假设您创建了一个端点处理程序,其完全限定名称为: \Vendor\Package\Hander\FileHander
;您可以通过以下方式推送此处理程序
第一个参数是此处理程序的端点名称,第二个参数是处理程序的完全限定类名(FQCN)。
$api = new \Phabricator\Phabricator('http://phabricator.example.com', 'cli-exmapletoken'); $api->pushEndpointHandler('File', FileHandler::class);
响应
客户端返回 \Phabricator\Response\ConduitResponse
作为响应。查看API文档中的方法。
升级
从 1.0.0 版本开始
在 2.0.0 版本中,API 发生了重大变化,底层 API 也发生了显著变化。因此,这个版本可能不兼容为 1.0.0 版本创建的组件。
主要API差异
\Phabricator\Phabricator
构造函数只接受 baseUrl 和 tokens 作为参数。- 构造函数中的客户端注册现在是可选的。
- 注册自定义端点处理程序只需要处理程序的完全限定类名,而不是实例。
- 现在响应不再是
\stdClass
,而是\Phabricator\Response\ConduitResponse
对象。 \Phabricator\Client\ClientInterface
接口发生了重大变化。- 端点处理程序方法(执行器)的参数发生了变化。
- 现在不使用全局命名空间中的异常,而是使用
buildr/foundation
包中的异常。 - 客户端不负责请求数据的格式化。
API 文档
2.0.0 版本的 API 文档可在以下链接找到: API 文档
贡献
有关贡献指南和编码标准,请访问我们的 编码标准仓库
许可
本项目受 GNU - 通用公共许可证,版本 3 许可。