dugan / sprintly-php
适用于PHP 5.4+的Sprintly API包装器
Requires
- php: >=5.4.0
- guzzlehttp/guzzle: ~5.0
Requires (Dev)
- mockery/mockery: ~0.9.0
- phpunit/phpunit: ~4.0
This package is not auto-updated.
Last update: 2024-09-24 02:26:58 UTC
README
这是一个用于PHP 5.4+包装Sprint.ly API的库。
API状态:(:heavy_check_mark: 完成,:interrobang: 进行中,:x: 待办)
"CRUD"应理解为
创建资源、删除资源、检索所有资源、检索1+个资源、更新资源
✔️ 产品CRUD
✔️ 产品人员CRUD
✔️ 产品项目CRUD
✔️ 对产品的项目进行轻量级查询
✔️ 检索项目的子项
快速入门
此包需要Composer
composer require "dugan/sprintly-php": "dev-master"
composer update
$service = new \Dugan\Sprintly\SprintlyService('myemail@example.net', 'mySprintlyAuthKey');
$products = $service->getProductsRepository()->all();
foreach($products as $product) {
echo $product->getName()."\n";
}
工作原理
底层,我们使用Guzzle库来消费Sprintly API
可以使用Dugan\Sprintly\SprintlyService
中的包装方法访问顶级实体,或者可以使用服务检索单独的存储库并与之交互。
认证
Sprintly的API使用电子邮件地址和认证令牌的HTTP认证,您可以从他们的网站检索这些信息。所有API方法都需要认证,其中一些需要您在给定产品上具有管理员状态。
如何使用您的凭据实例化API
$service = \Dugan\Sprintly\SprintlyService::instance($myEmail, $myAuthkey);
以下所有示例都将假设$service
已经使用您的凭据实例化。
由于SprintlyService实现了单例模式,我们可以在需要在不同地方重复实例化时避免重复实例化。要检索现有实例,只需调用
\Dugan\Sprintly\SprintlyService::instance()
常见功能
为了不重复多次以下代码片段,我将简单地说,大多数存储库实现以下两个方法,它们以三种不同的方式使用。我们将使用PeopleRepository进行演示,但其他存储库上也将存在相同的方法。
检索所有资源(索引)
$service->getPeopleRepository()->all()
检索单个资源(GET)
$service->getPeopleRepository()->get($id)
检索资源集合,但不是全部
$service->getPeopleRepository()->get([$firstId, $secondId])
请注意,这将执行多个HTTP请求,因此在处理多个资源时,通常更有效的是检索所有资源并在本地过滤它们。
还有用于通过服务检索实体的存储库的包装方法
$service->products()->get($id)
$service->items()->all()
等
产品
产品是Sprintly中的顶级实体。它具有与它相关的项目、人员、附件、标签等,所有这些都可以通过API访问。
检索所有产品
使用SprintlyService
$service->getAllProducts()
返回一个包含\Dugan\Sprintly\Entities\Product
的数组
检索单个产品
使用SprintlyService
$service->getProduct($id)
返回一个\Dugan\Sprintly\Entities\Product
实例
检索产品集合(但不是全部!)
使用SprintlyService
$service->getProduct([$firstId, $secondId])
使用ProductsRepository
$service->getProductsRepository()->get([$firstId, $secondId])
返回一个包含\Dugan\Sprintly\Entities\Product
的数组
<<<<<<< HEAD 返回的产品将具有几个可用于您的属性
$product->getName();
$product->getCreatedBy();
$product->getId();
$product->getCreatedAt();
$product->getWebhook();
Webhook特别有用,如果您想通过提交消息将Sprintly与GitHub或Bitbucket集成以关闭项目。
产品ID
Sprintly API表示的大多数实体都只能在产品上下文中访问。
除非另有说明,从现在开始,您应该假设所有代码示例都在以下内容之前:
$service->setProductId($productId)
这将允许服务在将它们返回给您之前自动将产品ID注入适当的仓库。
请注意,SprintlyService是一个单例,因此它会保留最后设置在它上面的最后一个产品ID,直到您再次设置另一个产品ID。
用户
在Sprintly用语中,用户被称为人员和人。API包装器反映了这一点。您只能在产品上下文中检索人员。
邀请用户加入产品
$user = new \Dugan\Sprintly\Entities\Person();
$user->setFirstName('Mike');
$user->setLastName('Dugan');
$user->setEmail('foo@bar.com');
$invitedUser = $service->people()->invite($user);
项目
项目是属于产品的故事、任务、缺陷等。同样,这些只能在产品上下文中检索。
创建一个新项目
$item = new \Dugan\Sprintly\Entities\Item();
$item->setTitle('Something broke');
$item->setAssignedTo($myUserId);
$item->setTags('major,bug');
$service->items()->create($item);
检索项目子项
$item = $service->items()->get($itemId);
$children = $service->items()->children($item);