dezer32 / dto-faker
v1.2.2
2023-01-02 10:47 UTC
Requires
- php: ^8.0
- dezer32/dto: ^1.3
- fakerphp/faker: ^1.21
- myclabs/php-enum: ^1.8
- ramsey/uuid: ^4.7
Requires (Dev)
- phpbench/phpbench: ^1.2
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-30 02:05:21 UTC
README
用于为 dezer32/dto 生成伪造数据的库
介绍
安装
1. 安装包
composer require dezer32/dto-faker
2. 获利!
附言:
如果你使用了 phpfaker/faker,那么你可以添加提供者
Dezer32\Libraries\Dto\Faker\Faker\FakerProvider::class
使用后
//for object: $faker->fakeDto(Class::class, ['additional' => 'parameter']); //only array: $faker->fakeDtoArray(Class::class, ['additional' => 'parameter']);
使用方法
<?php $dto = Faker::fake(ClassNameDto::class); // if you need additional parameters: $dto = Faker::fake(ClassNameDto::class, ['additional' => 'parameters']);
自定义
使用库 fakerphp
<?php declare(strict_types=1); use Dezer32\Libraries\Dto\DataTransferObject; use Dezer32\Libraries\Dto\Faker\{ Attributes\FieldFaker, Helpers\FakerMethod }; class SimpleDto extends DataTransferObject { public function __construct( #[FieldFaker(FakerMethod::NUMBER_BETWEEN, 10, 100)] private int $number ) {} public function getNumber(): int{ return $this->number; } }
个人定制
我们有任何类
declare(strict_types=1); use Dezer32\Libraries\Dto\DataTransferObject;use Dezer32\Libraries\Dto\Faker\Attributes\FieldFaker;use Dezer32\Libraries\Dto\Faker\Helpers\FakerMethod; class AnyClass { public function __construct( ...$args ) {} }
并且我们使用这个类有一个简单的 DTO
<?php declare(strict_types=1); use Dezer32\Libraries\Dto\DataTransferObject; use Dezer32\Libraries\Dto\Faker\{ Attributes\CastFieldFaker, Helpers\FakerMethod }; class SimpleDto extends DataTransferObject { public function __construct( #[CastFieldFaker(AnyClassFakeCaster::class, 'any_args')] private AnyClass $var ) {} public function getVar(): AnyClass{ return $this->var; } }
并且我们需要转换器
<?php declare(strict_types=1); namespace Dezer32\Libraries\Dto\Faker\Tests\Fixtures; use Dezer32\Libraries\Dto\Faker\Contracts\FakeCasterInterface; class AnyClassFakeCaster implements FakeCasterInterface { public function __construct( private string $param, ) { } public function generate(): AnyClass { return new AnyClass($this->param); } }