stwarog/fuel-fixtures-generator

fuel fixtures package 的生成器

1.0.0 2022-02-16 19:41 UTC

This package is auto-updated.

Last update: 2024-09-17 01:09:59 UTC


README

这是一个帮助生成 Fuel Fixture 包实现 的包。

开发

make start # starts the local env
make check # calls all tests including statis analysis
  make cs
  make phpstan
  make unit
  make integration

使用方法

# The best approach is using some DI container implementation and fetch the service from there:

use Stwarog\FuelFixturesGenerator\{Config as FixtureGeneratorConfig,
    Factory as FixtureChunkFactory,
    FixtureFactory,
    FuelAwareNameGenerator,
    NameGenerator,
    Renderer\Engine,
    Renderer\Engine as FixtureGeneratorViewEngine,
    Renderer\File,
    Renderer\Service as Generator,
    Renderer\Storage};

# e.g. entry configuration

return [
    NameGenerator::class => fn(Container $c) => new FuelAwareNameGenerator($c->get(FixtureGeneratorConfig::class)),

    Storage::class => fn(Container $c) => new File(),

    FixtureChunkFactory::class => fn(Container $c) => new FixtureFactory(
        $c->get(NameGenerator::class),
        $c->get(FixtureGeneratorConfig::class)
    ),

    // Adapter for Twig of Fixture Generator Engine
    FixtureGeneratorViewEngine::class => function (Container $c): Engine {
        return new class ($c->get(TwigViewRenderer::class)) implements FixtureGeneratorViewEngine {

            private ViewRendererContract $renderer;

            public function __construct(TwigViewRenderer $renderer)
            {
                $this->renderer = $renderer;
            }

            public function render(string $fileName, array $params = []): string
            {
                return $this->renderer->render('fixture.twig', $params);
            }
        };
    },

    FixtureGeneratorConfig::class => function (Container $c): FixtureGeneratorConfig {
        return new class () implements FixtureGeneratorConfig {

            public function getNameSpace(): string
            {
                return 'Tests\Fixtures';
            }

            public function storagePath(): string
            {
                return APPPATH . 'tests/fixtures/';
            }

            public function outputTemplate(): string
            {
                return 'fixture.twig';
            }
        };
    },

    Generator::class => fn(Container $c) => new Generator(
        $c->get(FixtureChunkFactory::class),
        $c->get(FixtureGeneratorViewEngine::class),
        $c->get(Storage::class),
        $c->get(FixtureGeneratorConfig::class),
    ),
];

重要

此包需要一些模板引擎。在集成测试中可以找到一个使用 Twig 的示例。

目前没有在 CLI 中实现使用,因为 Fuel 自动加载系统非常具有挑战性。请获取服务并调用方法以生成文件。