kurlsilex-doctrine-migrations-provider

Silex 的 doctrine 迁移提供者

0.3.2 2020-03-23 11:51 UTC

README

Silex 2.x 或 Pimple 3.x 的 doctrine 迁移服务提供者。

安装

通过 Composer 安装提供者

composer require kurl/silex-doctrine-migrations-provider

使用

参数

以下是您可以为提供者配置的配置参数

  • migrations.directory:迁移所在的目录。必需。
  • migrations.namespace:迁移类的作用域。必需。
  • migrations.name:迁移套件的名称。默认为 "Migrations"。
  • migrations.table_name:数据库迁移表。默认为 migration_versions

服务

服务提供者注册以下服务,您可以使用这些服务

  • migrations.em_helper_set:Doctrine ORM 实体管理器辅助集。如果您已注册了 orm.em 服务(假设来自 `DoctrineServiceProvider`),则会注册。
  • migrations.commands:一组 Symfony 命令实例。您可以使用它们添加到自己的控制台应用程序中。

还有几个其他服务,提供者内部使用,并且它们被公开,以便您可以通过 Pimple 的懒加载来扩展或覆盖它们

  • migrations.output_writer:在 Doctrine 迁移配置中使用的 Doctrine\DBAL\Migrations\OutputWriter 实例。
  • migrations.configuration:在控制台命令中使用的 Doctrine\DBAL\Migrations\Configuration\Configuration 实例。
  • migrations.command_names:命令名称数组。您可以将自己的命令添加到此处,以便懒加载到 migrations.commands 中。

您可以按照以下方式注册提供者并配置它

<?php

$app->register(
    new \Kurl\Silex\Provider\DoctrineMigrationsProvider(),
    array(
        'migrations.directory' => __DIR__ . '/../path/to/migrations',
        'migrations.name' => 'Acme Migrations',
        'migrations.namespace' => 'Acme\Migrations',
        'migrations.table_name' => 'acme_migrations',
    )
);

Silex

您可以将 Symfony\Component\Console\Application 的一个可选实例传递给提供者的构造函数。或者,您可以将控制台应用程序的实例设置为 $app['console']。如果提供者可以找到控制台应用程序实例,则它可以为您注册命令和辅助集。

提供者实现了 `Silex\Api\BootableProviderInterface`,因此如果您使用提供者与 Silex 一起使用,则启动应用程序将为您注册命令

<?php

$console = new \Symfony\Component\Console\Application();

$app->register(
    new \Kurl\Silex\Provider\DoctrineMigrationsProvider($console),
    array(
        'migrations.directory' => __DIR__ . '/../path/to/migrations',
        'migrations.namespace' => 'Acme\Migrations',
    )
);

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

Pimple

如果您使用提供者与 Pimple 一起使用,而不使用 Silex,那么您需要自己注册辅助集和命令到您的控制台应用程序中。由于提供者已经注册了所有必需的服务,因此这使得操作变得非常简单

<?php

$console = new \Symfony\Component\Console\Application();

$app->register(
    new \Kurl\Silex\Provider\DoctrineMigrationsProvider(),
    array(
        'migrations.directory' => __DIR__ . '/../path/to/migrations',
        'migrations.namespace' => 'Acme\Migrations',
    )
);

// Register helper set and commands from the `DoctrineMigrationsProvider`
$console->setHelperSet($app['migrations.em_helper_set']);
$console->addCommands($app['migrations.commands']);

$console->run();

代码覆盖率报告

$ bin/phpunit --coverage-html build/coverage --coverage-clover build/logs/clover.xml --log-junit build/logs/phpunit.xml

这就完成了!