mbezhanov/silex-alice-data-fixtures

一个库,用于简单地将 Alice 和 Doctrine Data Fixtures 集成到 Silex 项目中

0.2.0 2017-06-28 08:05 UTC

This package is auto-updated.

Last update: 2024-09-23 00:12:49 UTC


README

一个库,用于简单地将 nelmio/alicedoctrine/data-fixtures 集成到 Silex 项目中

安装

通过 Composer 安装此库

composer require mbezhanov/silex-alice-data-fixtures

用法

配置

要开始运行,请按照以下示例将所有必要的 Service Providers 注册到您的应用程序中

<?php 

use Bezhanov\Silex\AliceDataFixtures\FixturesServiceProvider;
use Dflydev\Provider\DoctrineOrm\DoctrineOrmServiceProvider;
use Silex\Application;
use Silex\Provider\DoctrineServiceProvider;
use Symfony\Component\Console\Application as Console;

$app = new Application();

$app->register(new DoctrineServiceProvider(), array(
    'db.options' => [
        'driver' => 'pdo_sqlite',
        'path' => __DIR__ . '/sqlite.db',
    ],
));

$app->register(new DoctrineOrmServiceProvider(), [
    'orm.em.options' => [
        'mappings' => [
            [
                'type' => 'annotation',
                'namespace' => 'App\Entity',
                'path' => __DIR__ . '/src/App/Entity',
                'use_simple_annotation_reader' => false,
            ],
        ],
    ],
]);

$console = new Console();
$app->register(new FixturesServiceProvider($console));

$app->boot();
$console->run();

这将自动将 fixtures:load 命令注册到您的控制台应用程序中,您将能够调用

./bin/console fixtures:load

默认情况下,该命令将尝试加载当前工作目录中位于的 "fixtures.yml" 文件。您可以通过指定一个完整的 fixtures 文件路径来指定 fixtures 文件

./bin/console fixtures:load --fixture="/path/to/fixture.yml"

如果您希望将 fixtures 添加到现有数据中,而不是截断数据库,您可以使用

./bin/console fixtures:load --fixture="/path/to/fixture.yml" --append

定义 fixtures

YML 文件遵循 Alice 识别的标准格式

Bezhanov\Silex\AliceDataFixtures\Tests\Entity\Foo:
    foo{1..10}:
        name: '<name()>'
Bezhanov\Silex\AliceDataFixtures\Tests\Entity\Bar:
    bar{1..5}:
        name: '<name()>'

使用自定义 Faker 提供者

有时您可能需要比 Alice 本身提供的更多功能。内部,Alice 依赖于 Faker 来生成假数据。

您可以通过以下示例轻松自定义 Faker 生成器 实例(例如,向其中添加更多提供者)

<?php

use Bezhanov\Silex\AliceDataFixtures\FixturesServiceProvider;

$app = new Silex\Application();

$faker = Faker\Factory::create();
$faker->addProvider(new Bezhanov\Faker\Provider\Food($faker));

$app->register(new FixturesServiceProvider($console), [
    'fixtures.faker_generator' => $faker,
]);

贡献

这个库还处于早期开发阶段,欢迎所有贡献。在打开 PR 之前,请确保所有测试都通过,并且代码覆盖率令人满意

phpunit tests --coverage-html coverage