定制 apie/faker 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

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

apie/faker

最新稳定版本:1.0.0-RC2

Composer 安装命令:

composer require apie/faker

包简介

Composer package of the apie library: faker

README 文档

README

faker

Latest Stable Version Total Downloads Latest Unstable Version License PHP Composer

PHP Composer

This package is part of the Apie library. The code is maintained in a monorepo, so PR's need to be sent to the monorepo

Documentation

This package adds a method to the library Faker to fake domain object and value object contents.

Because of the recursive nature this is the easiest setup:

<?php
use Apie\Faker\ApieObjectFaker;
use Faker\Factory;

$faker = Factory::create();
$faker->addProvider(ApieObjectFaker::createWithDefaultFakers($faker));

// returns a random Gender enum value.
$faker->fakeClass(Gender::class);

class User implements EntityInterface
{
    // ...
    public function __construct(private Gender $gender, private FirstName $firstName, private LastName $lastName)
    {
    }
}
// creates a User with random constructor arguments.
$faker->fakeClass(User::class);

String value objects with regular expressions.

String value objects that have the trait IsStringWithRegexValueObject and implement HasRegexValueObjectInterface will be faked easily by using the regular expression to make a valid value object.

Adding custom support

You can create a class implementing ApieClassFaker to make your own fake methods. You can reuse the methods available in Faker itself.

<?php
use Apie\Faker\Interfaces\ApieClassFaker;
use Faker\Generator;
use ReflectionClass;

class SpecificClassFaker implements ApieClassFaker
{
    public function supports(ReflectionClass $class): bool
    {
        return $class->name === SpecificValueObject::class;
    }
    public function fakeFor(Generator $generator, ReflectionClass $class): SpecificValueObject
    {
        return new SpecificValueObject($generator->randomElement([1, 2, 3]));
    }
}

Adding a createRandom method in the object itself.

Instead of making many ApieClassFaker methods you can make a method on the value object that will result in a random value object.

<?php
use Apie\Core\Attributes\FakeMethod;
use Apie\Core\ValueObjects\Interfaces\ValueObjectInterface;

#[FakeMethod("createRandom")]
class SpecificClass implements ValueObjectInterface
{
    public static function createRandom(): self
    {
        return new self(rand(1, 3));
    }
}

You can also provide arguments to this method or the Faker generator itself:

<?php
use Apie\Core\Attributes\FakeMethod;
use Apie\Core\ValueObjects\Interfaces\ValueObjectInterface;
use Faker\Generator;

#[FakeMethod("createRandom")]
class SpecificClass implements ValueObjectInterface
{
    public static function createRandom(Generator $generator, int $maximum): self
    {
        return new self($generator->numberBetween(1, $maximum));
    }
}

In this case calling $faker->fakeClass(SpecificClass::class); will run SpecificClass::createRandom() with the faker and a random integer.

统计信息

  • 总下载量: 6.99k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 2
  • 推荐数: 0

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-06-21