feffel / felfactory
v0.1.0
2019-07-20 12:38 UTC
Requires
- php: >=7.2
- doctrine/annotations: ^1.6
- doctrine/lexer: ^1.0
- fzaninotto/faker: ^1.8
- mustangostang/spyc: ^0.6.2
- symfony/dotenv: ^4.3
Requires (Dev)
- mockery/mockery: ^1.2
- phpunit/phpunit: >=7.0
- psy/psysh: ^0.9.9
- squizlabs/php_codesniffer: ^3.0
- symfony/var-dumper: ^4.2
- vimeo/psalm: ^3.2
This package is auto-updated.
Last update: 2024-09-21 00:03:42 UTC
README
felfactory是一个库,可以为您生成充满虚假数据的对象。无论您需要随机化测试数据、启动数据库、填充持久化数据以进行压力测试,还是匿名化从生产服务中获取的数据。
由Faker的数据生成器提供支持。
目录
安装
通过composer
composer require feffel/felfactory
基本用法
将类名传递给您的工厂实例,它将创建并填充适当的类型数据。
class Person { private $firstName; private $lastName; private $address; } $factory = new \felfactory\Factory(); $person = $factory->generate(Person::class); var_dump($person); // class Person#2407 (3) { // private $firstName => string(6) "Breana" // private $lastName => string(7) "Okuneva" // private $address => string(43) "37382 Chanel Point Steuberchester, AR 83395" // }
配置
配置使用环境变量,将这些添加到您的环境或添加一个.env
文件到您的根项目目录。
模型定义
您可以为模型提供定义以自定义模型的生成,定义不需要包含所有属性,工厂仍然会猜测缺失的属性。
- Generate接受一个Faker生成器属性[例如:firstName,lastName,phoneNumber,...]
- Value接受任何PHP值并将其传递给属性[例如:"string value",15,null,...]
- ObjectOf接受一个FQCN并生成此类型的对象[例如:namespace\models\Person,Person::class,...]
- ManyOf接受任何之前的定义作为它的第一个参数,并生成一个数组,这个数组由它提供的第二个和第三个参数提供的包含范围所限制。
注释定义
use felfactory\Annotation as FCT; class AnnotatedModel { /** * @FCT\Generate("firstName") */ public $firstName; /** * @FCT\Value("""felfel""") */ protected $lastName; /** * @FCT\ObjectOf(AddressModel::class) */ public $address; /** * @FCT\ManyOf(@FCT\Generate("phoneNumber"), 1, 3) */ public $phoneNos; }
PHP定义
return [ AnnotatedModel::class => [ 'firstName' => "generate('firstName')", 'lastName' => "value('\"felfel\"')", 'address' => "class(felfactory\models\AddressModel)", 'phoneNos' => "many(generate('phoneNumber'), 1, 3)" ], ];
工作原理
工厂不使用类的原始构造函数,也不提供任何设置器。所有的初始化过程都由反射处理。
工厂查找属性上的@var
注释以确定其类型,如果找到属性的定义,将使用该定义,否则将根据属性的类型和名称猜测。
对象
如果找到属性是对象,将触发另一个工厂调用以生成它,名称将被忽略。接口和抽象类型将不会自动生成,并将设置为null。
标量类型和非注释属性
标量类型将根据属性名称首先猜测,如果不匹配任何支持的数据生成器,则根据类型生成。
贡献
请参阅CONTRIBUTING和CODE_OF_CONDUCT以获取详细信息。
鸣谢
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。