digital-creative/fakeable-data-transfer-object

1.0.2 2022-12-23 16:51 UTC

This package is auto-updated.

Last update: 2024-09-23 20:16:51 UTC


README

Latest Version on Packagist Total Downloads License

此包通过仅包含一个新的静态方法 ::fake() 扩展了 https://github.com/spatie/data-transfer-object,因此与原始包没有区别。

安装

您可以通过 composer 安装此包

composer require digital-creative/fakeable-data-transfer-object

依赖关系

使用方法

use DigitalCreative\FakeableDataTransferObject\DataTransferObject;

class SomeObject extends DataTransferObject
{
    public string $name;
    public int $age;
}

然后

$dto1 = SomeObject::fake();
$dto2 = SomeObject::fake(age: 18);

echo $dto1->name; // random word
echo $dto1->age; // random int

echo $dto2->name; // random word
echo $dto2->age; // 18

注册自定义类型

您可以通过在您的 AppServiceProviderboot 方法中添加以下内容来注册任何自定义类型

<?php

namespace App\Providers;

use BenSampo\Enum\Enum;
use DigitalCreative\FakeableDataTransferObject\FakerRegistrar;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    public function boot(): void
    {
        FakerRegistrar::register(Enum::class, function (string $class, mixed $value = null) {
            return blank($value) ? $class::getRandomInstance() : $class::fromValue($value);
        });
        
        FakerRegistrar::register(UploadedFile::class, function (string $class, mixed $value = null) {
            /** @var UploadedFile $class */
            return blank($value) ? $class::fake()->create('file.png') : $value;
        });

    }
}

并使用如下

use DigitalCreative\FakeableDataTransferObject\DataTransferObject;

class SomeObject extends DataTransferObject
{
    public GenderEnum $gender;
    public UploadedFile $attachment;
}

许可

MIT 许可证 (MIT)。请参阅 许可文件 了解更多信息。