bigoen/api-bridge-converter
最新稳定版本:v1.0.4
Composer 安装命令:
composer require bigoen/api-bridge-converter
包简介
APi bridge converter for api projects.
README 文档
README
Install:
composer require bigoen/api-bridge-converter
Create your converter.
<?php declare(strict_types=1); namespace Bigoen\ApiBridgeConverter\Model; /** * @author Şafak Saylam <safak@bigoen.com> */ class ConvertUnsetsProperty implements ConvertPropertyInterface { public array $properties = []; public static function new(array $properties = []): self { $object = new self(); $object->properties = $properties; return $object; } public function convert(array $arr): array { foreach ($this->properties as $property) { unset($arr[$property]); } return $arr; } }
Convert api values in tree.
use Bigoen\ApiBridge\Bridge\ApiPlatform\HttpClient\JsonldClient; use Bigoen\ApiBridgeConverter\Model\ConvertDateTimeProperty; use Bigoen\ApiBridgeConverter\Model\ConvertTreeProperty; use Bigoen\ApiBridgeConverter\Model\ConvertUnsetsProperty; use Bigoen\ApiBridgeConverter\Model\ConvertProperty; $categories = $this->entityManager ->getRepository(Category::class) ->findAllIndexById(); $tags = $this->entityManager ->getRepository(Tag::class) ->findAllIndexById(); // set converts. $convertProperties = [ new ConvertTreeProperty( '[category]', false, '[category][@id]', null, $this->getConvertValues('/api/categories/{id}', $categories) ), new ConvertTreeProperty( '[tags]', true, '[tags][][@id]', Tag::class, $this->getConvertValues('/api/tags/{id}', $tags), [ new ConvertDateTimeProperty('[createdAt]'), new ConvertDateTimeProperty('[updatedAt]'), ] ), new ConvertDateTimeProperty('[createdAt]'), new ConvertDateTimeProperty('[updatedAt]'), // class property and api property. new ConvertProperty('[id]', '[_id]'), ]; // unsets for sending. $sendingConvertProperties = [ new ConvertUnsetsProperty(['id', 'name']), ]; /* @var $client JsonldClient */ $client->setConvertProperties($convertProperties)->setSendingConvertProperties($sendingConvertProperties);
Use in custom object.
<?php declare(strict_types=1); namespace Bigoen\Test\Model\Input; use Bigoen\ApiBridgeConverter\Model\ConvertUnsetNullsProperty; use Bigoen\ApiBridgeConverter\Model\Traits\ArrayObjectConverterTrait; use Bigoen\Test\Contracts\InputInterface; /** * @author Şafak Saylam <safak@bigoen.com> */ final class PaymentCardInput implements InputInterface { use ArrayObjectConverterTrait; public function __construct( public string $cardHolderName, public string $cardNumber, public string $expireYear, public string $expireMonth, public string $cvc, public ?string $cardAlias = null, public ?bool $storeCardAfterSuccessPayment = null, public ?string $cardUserKey = null ) { } public function toArray(): array { return self::objectToArray($this, [ new ConvertUnsetNullsProperty(), ]); } }
Important: property and deep names details > https://symfony.com/doc/current/components/property_access.html
统计信息
- 总下载量: 813
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 0
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: LGPL-3.0
- 更新时间: 2023-06-06