mbezhanov / silex-alice-data-fixtures
一个库,用于简单地将 Alice 和 Doctrine Data Fixtures 集成到 Silex 项目中
0.2.0
2017-06-28 08:05 UTC
Requires
- php: ^7.0
- dflydev/doctrine-orm-service-provider: ^2.0
- doctrine/data-fixtures: ^1.2
- nelmio/alice: ^3.0@RC
- silex/silex: ^2.1
- symfony/console: ^3.3
Requires (Dev)
- phpunit/phpunit: ^6.2
This package is auto-updated.
Last update: 2024-09-23 00:12:49 UTC
README
一个库,用于简单地将 nelmio/alice 和 doctrine/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