family-office/fixtures-library

此包已被弃用且不再维护。未建议替代包。

一个易于使用的 fixture 和依赖项加载库。


README

Fixtures Library

一个易于使用的 fixture 和依赖项加载库。

⚠️ 声明:此解决方案是为一个非常特定的用例开发的。在您的用例中加载 fixtures 的最佳方法可能已被 Doctrines 数据 fixtures 覆盖。

❤️ 想要贡献?

阅读我们的 贡献指南 并创建一个 问题拉取请求

安装

composer require family-office/fixtures-library

💡 使用方法

创建 fixture

Fixture 是实现 FixtureInterface 的常规类。

namespace FamilyOffice\FixturesLibrary\Example\Basic\Fixtures;

use FamilyOffice\FixturesLibrary\FixtureInterface;

final class EarFixture implements FixtureInterface
{
    public function getDependencies(): array
    {
        return [];
    }

    public function load(): void
    {
        // todo: implement data loading
    }
}

所有应在 fixture 中执行的代码都应该放在 load 方法中。

有时,由于必须按特定顺序执行,fixture 需要相互依赖。

fixture 所有的依赖项都应从 getDependencies 方法返回。

namespace FamilyOffice\FixturesLibrary\Example\Basic\Fixtures;

use FamilyOffice\FixturesLibrary\FixtureInterface;

final class ElephantFixture implements FixtureInterface
{
    public function getDependencies(): array
    {
        return [EarFixture::class];
    }

    public function load(): void
    {
        // todo: implement data loading
    }
}

加载 fixture

最快速、最简单加载 fixture 的方法是通过创建默认链构建器实例。

$defaultChainBuilder = ChainBuilder::createQuickLoader();

然后,随着依赖项树构建,可以轻松地即时加载 fixture。

$defaultChainBuilder->build([new ElephantFixture()]);

完整示例

完整示例可以在 这里 找到。

高级使用

依赖项链构建和加载过程可以完全根据您的需要进行自定义。

关于此库高级功能的扩展文档可以在 这里 找到。

📝 许可证

此项目在 MIT 许可证下发布。您可以使用代码做任何您想做的事情!