承接 butschster/entity-faker 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

butschster/entity-faker

最新稳定版本:v2.0.0

Composer 安装命令:

composer require butschster/entity-faker

包简介

Create fake entities based on your classes

README 文档

README

Support me on Patreon Latest Stable Version Build Status Total Downloads License

This package will help you generate fake entities and persist them to your ORM.

<?php use Butschster\EntityFaker\LaminasEntityFactory; use Laminas\Hydrator\ReflectionHydrator; use Faker\Factory as Faker; $factory = new \Butschster\EntityFaker\Factory( new LaminasEntityFactory( new ReflectionHydrator() ), Faker::create() ); class User { private string $id; private string $username; private string $email; public function __construct(string $id, string $username, string $email) { $this->id = $id; $this->username = $username; $this->email = $email; } } class SuperUser extends User { private bool $isAdmin = false; public function __construct(string $id, string $username, string $email, bool $isAdmin) { parent::__construct($id, $username, $email); $this->isAdmin = $isAdmin; } } $factory->define(User::class, function (Faker $faker, array $attributes) { return [ 'id' => $faker->uuid, 'username' => $faker->username, 'email' => $faker->email ]; }); $factory->define(SuperUser::class, function (Faker $faker, array $attributes) use($factory) { $userAttributes = $factory->raw(User::class); return $userAttributes + [ 'isAdmin' => $faker->boolean ]; });

Create and persist an entity

$user = $factory->of(User::class)->create(); //class User { // private string $id = "0b13e52d-b058-32fb-8507-10dec634a07c"; // private string $username = "zetta86"; // private string $email = "tsteuber@hotmail.com"; //}

Create and persist multiply entities

$users = $factory->of(User::class)->times(10)->create(); //[ // class User { // private string $id = "0b13e52d-b058-32fb-8507-10dec634a07c"; // private string $username = "zetta86"; // private string $email = "tsteuber@hotmail.com"; // }, // ... //]

Create and persist an entity with predefined attributes

$user = $factory->of(User::class)->create([ 'email' => 'admin@site.com' ]); //class User { // private string $id = "0b13e52d-b058-32fb-8507-10dec634a07c"; // private string $username = "zetta86"; // private string $email = "admin@site.com"; //}

Create an entity

$user = $factory->of(User::class)->make(); //class User { // private string $id = "0b13e52d-b058-32fb-8507-10dec634a07c"; // private string $username = "zetta86"; // private string $email = "tsteuber@hotmail.com"; //}

Create multiply entities

$users = $factory->of(User::class)->times(10)->make(); //[ // class User { // private string $id = "0b13e52d-b058-32fb-8507-10dec634a07c"; // private string $username = "zetta86"; // private string $email = "tsteuber@hotmail.com"; // }, // ... //]

Create an entity with predefined attributes

$user = $factory->of(User::class)->make([ 'email' => 'admin@site.com' ]); //class User { // private string $id = "0b13e52d-b058-32fb-8507-10dec634a07c"; // private string $username = "zetta86"; // private string $email = "admin@site.com"; //}

Get raw attributes for entity

$attributes = $factory->of(SuperUser::class)->raw(); //[ // 'id' => "0b13e52d-b058-32fb-8507-10dec634a07c", // 'username' => 'zetta86', // 'email' => 'tsteuber@hotmail.com', //]

Get raw attributes for entity with predefined values

$attributes = $factory->of(SuperUser::class)->raw([ 'email' => 'test@site.com' ]); //[ // 'id' => "0b13e52d-b058-32fb-8507-10dec634a07c", // 'username' => 'zetta86', // 'email' => 'test@site.com', //]

Generate array of all defined entities

$repository = $factory->make(1000); $seeds = $repository->get(User::class)->random(100); $seeds = $repository->get(SuperUser::class)->take(50);

Generate array of raw data for all defined entities

$repository = $factory->raw(1000); $seeds = $repository->get(User::class)->random(100); $seeds = $repository->get(SuperUser::class)->take(50);

Export array of raw data to a file for given entity to php file

$path = $factory->of(SuperUser::class)->times(1000)->export('path/to/store'); // path/to/store/SuperUser.php

Export array of raw data to a files for all defined entities

$repository = $factory->export('path/to/store', 1000); $seeds = $repository->get(User::class)->random(100);

Custom entity builder

You can define your own EntityBuilder class with custom persist logic.

use Butschster\EntityFaker\EntityFactoryInterface; use Faker\Factory as Faker; use Cycle\ORM\ORMInterface; use Cycle\ORM\TransactionInterface; class CycleOrmEntityFactory implements EntityFactoryInterface { private array $afterCreation = []; private array $beforeCreation = []; protected ORMInterface $orm; protected Transaction $transaction; public function __construct(ORMInterface $orm) { $this->orm = $orm; $this->beforeCreation(function () { $this->transaction = new Transaction($this->orm); }); $this->afterCreation(function () { $this->transaction->run(); }); } public function store(object $entity): void { $this->transaction->persist($entity); } public function hydrate(object $entity, array $data): object { return $this->orm->getMapper($entity)->hydrate($entity, $data); } /**  * Add a callback to run after creating an entity or array of entities.  * @param callable $callback  */ public function afterCreation(callable $callback): void { $this->afterCreation[] = $callback; } public function afterCreationCallbacks(): array { return $this->afterCreation; } /**  * Add a callback to run before creating an entity or array of entities.  * @param callable $callback  */ public function beforeCreation(callable $callback): void { $this->beforeCreation[] = $callback; } public function beforeCreationCallbacks(): array { return $this->beforeCreation; } } $factory = new \Butschster\EntityFaker\Factory( new CycleOrmEntityFactory(...), Faker::create() );

统计信息

  • 总下载量: 33.48k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 4
  • 点击次数: 1
  • 依赖项目数: 3
  • 推荐数: 0

GitHub 信息

  • Stars: 4
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固