dezer / fake-generator-data-transfer-object
自动生成数据传输对象的假数据
v0.0.8
2021-11-18 07:26 UTC
Requires
- php: ^7.4 || ^8.0
- fakerphp/faker: ^1.14
- myclabs/php-enum: ^1.8
- nesbot/carbon: ^2.0
- ramsey/uuid: ^4.1
- spatie/data-transfer-object: ^2.8
Requires (Dev)
- phpunit/phpunit: ^9.5
- psy/psysh: ^0.10.8
- symfony/var-dumper: ^5.3
README
dto 假数据生成器 - 一劳永逸,不再为数据和用户烦恼。
bin/console mock:dto:make Client ^ Dto\Client^ {#141 +passport: Dto\Passport^ {#143 +series: "8301" +number: "024729" +issue_date: DateTime @999300505 {#146 date: 2001-08-31 23:28:25.0 UTC (+00:00) } #ignoreMissing: false #exceptKeys: [] #onlyKeys: [] } +phone: "+7 (984) 637-01-62" +email: "elvira46@drozdov.ru" +registration_address: "061181, Мурманская область, город Клин, пер. Бухарестская, 48" +birth_date: DateTime @252504479 {#145 date: 1978-01-01 12:07:59.0 UTC (+00:00) } +last_name: "Фадеев" +middle_name: "Владимировна" +first_name: "Артемий" #ignoreMissing: false #exceptKeys: [] #onlyKeys: [] }
客户端 - dto 相对于 namespace 的名称 ...Dto\,并且通过注解进行描述。
根据变量类型/注解描述生成相应的假 dto。
如果需要为特定的 dto 变量指定具体规则,例如客户的全名(保证不是一串字母),则需要在变量上方添加注解 @FakeGenerator 并指定参数 firstName。
/** @FakeGenerator lastName */ public string $last_name; /** @FakeGenerator middleName */ public string $middle_name; /** @FakeGenerator firstName */ public string $first_name;
或者例如护照签发日期不能早于 18 岁生日。
/** @FakeGenerator dateTimeBetween ("-30 years", "-19 years") */ public DateTimeInterface $issue_date;
或者按照 dto,电话号码是字符串类型,但实际上
/** @FakeGenerator numerify ("+7 (9##) ###-##-##") */ public string $phone;
或者按类型 string,实际上这是一串用于正则表达式的字符串。
/** @FakeGenerator regexify ("[0-9]{4}") */ public string $series; /** @FakeGenerator regexify ("[0-9]{6}") */ public string $number;
注解的使用语法如下
/** @FakeGenerator %Faker\Generator->methodName% ("%param1%", "%param2%") */ /** @FakeCollection %Name\Space\To\Dto% */
其中
- %Faker\Generator->methodName% - Faker\Generator 类中的方法名称
- %param1%, %param2%, ..., %paramN% - 此方法的参数
- %Name\Space\To\Dto% - 类的 namespace 和类名,例如:Dezer\FakeGeneratorDataTransferObject\ClassDto
注意:参数之间的分隔符 ", "
是必需的,且在描述中应避免使用。