cacahouwete / lazy-api-collection
通过一个独特的可迭代对象处理带有分页的REST API端点
v0.1.0
2022-11-09 22:43 UTC
Requires
- php: >=8.0
Requires (Dev)
- phpspec/prophecy-phpunit: ^2.0
- phpunit/phpunit: ^9.5
- symfony/framework-bundle: ^5.4 | ^6
- symfony/http-client: ^5.4 | ^6
- symfony/serializer: ^5.4 | ^6
- symfony/thanks: ^1
Suggests
- symfony/framework-bundle: ^5.4 | ^6
- symfony/http-client: ^5.4 | ^6
- symfony/serializer: ^5.4 | ^6
README
PHP 工具,方便迭代具有多页面的API
使用 symfony 安装
composer require cacahouwete/lazy-api-collection
在您的 symfony 项目中添加包
<?php // config/bundles.php return [ ... LazyApiCollection\Bridge\Symfony\LazyApiCollectionBundle::class => ['all' => true], ]
使用 symfony 的基本用法
<?php namespace App\ApiEntity; // src/ApiEntity/Dummy.php final class Dummy { public string $field1; public string $field2; .... }
// src/ApiRepository/DummyApiRepository.php namespace App\ApiRepository; use LazyApiCollection\Bridge\Symfony\Builder\LazyApiCollectionBuilderInterface; use LazyApiCollection\Model\ApiCollection; use LazyApiCollection\Model\LazyApiCollection; final class DummyApiRepository { private const PATH = '/api/dummies'; private LazyApiCollectionBuilderInterface $lazyApiCollectionBuilder; private string $targetUrl; public function __construct(LazyApiCollectionBuilderInterface $lazyApiCollectionBuilder, string $targetUrl) { $this->lazyApiCollectionBuilder = $lazyApiCollectionBuilder; $this->targetUrl = $targetUrl; } /** * @return iterable<Dummy> */ public function findAllByPageAndNbItem(): iterable { return $this->lazyApiCollectionBuilder ->create($this->targetUrl.self::PATH, Dummy::class) ->build() ; } }