yoanm/jsonrpc-params-symfony-constraint-doc-sdk

从symfony约束生成JSON-RPC文档的SDK

v1.1.0 2023-04-02 14:09 UTC

README

License Code size Dependabot Status

Scrutinizer Build Status Scrutinizer Code Quality Codacy Badge

CI codecov Symfony Versions

Latest Stable Version Packagist PHP version

PHP SDK 从symfony约束生成JSON-RPC文档

有关自动依赖注入,请参阅yoanm/symfony-jsonrpc-params-sf-constraints-doc

版本

  • Symfony v3/4 PHP >=7.1 : v0.x
  • Symfony v4/5 PHP >=7.2 : v1.0
  • Symfony v4.4/5.4/6.x PHP ^8.0 : v1.1

如何使用

创建转换器

use Yoanm\JsonRpcParamsSymfonyConstraintDoc\App\Helper\ConstraintPayloadDocHelper;
use Yoanm\JsonRpcParamsSymfonyConstraintDoc\App\Helper\DocTypeHelper;
use Yoanm\JsonRpcParamsSymfonyConstraintDoc\App\Helper\MinMaxHelper;
use Yoanm\JsonRpcParamsSymfonyConstraintDoc\App\Helper\StringDocHelper;
use Yoanm\JsonRpcParamsSymfonyConstraintDoc\App\Helper\TypeGuesser;
use Yoanm\JsonRpcParamsSymfonyConstraintDoc\Infra\Transformer\ConstraintToParamsDocTransformer;

$constraintPayloadDocHelper = new ConstraintPayloadDocHelper();

$transformer = new ConstraintToParamsDocTransformer(
  new DocTypeHelper(
    $constraintPayloadDocHelper,
    new TypeGuesser()
  ),
  new StringDocHelper(),
  new MinMaxHelper(),
  $constraintPayloadDocHelper
);

然后使用单个约束或一组

use Symfony\Component\Validator\Constraints as ConstraintNS;
use Yoanm\JsonRpcServerDoc\Domain\Model\Type\ObjectDoc;
use Yoanm\JsonRpcServerDoc\Domain\Model\Type\StringDoc;

$constraint = new ConstraintNS\Collection([
  'a' => new ConstraintNS\Type('string'),
  'b' => new ConstraintNS\Type('integer'),
  'c' => new ConstraintNS\Type('bool')
]);

/** @var ObjectDoc $constraintDoc */
$constraintDoc = $transformer->transform($constraint);

/** @var StringDoc $constraintDoc2 */
$constraintDoc2 = $transformer->transformList([
  new ConstraintNS\Type('string'),
  new ConstraintNS\NotNull()
]);

贡献

请参阅贡献说明