phpcr/phpcr-migrations

PHPCR 迁移工具

1.4.0 2024-03-16 10:05 UTC

This package is auto-updated.

Last update: 2024-09-18 16:48:32 UTC


README

Build Status

受 Doctrine 迁移影响,为 PHPCR 提供迁移库。

有关与 Symfony 集成,请参阅 PHPCR Migrations Bundle

用法

<?php

use Symfony\Component\Console\Output\NullOutput;
use PHPCR\Migrations\VersionStorage;
use PHPCR\Migrations\VersionFinder;
use PHPCR\Migrations\Migrator;

$storage = new VersionStorage($phpcrSession);
$finder = new VersionFinder(['/path/to/migrations']);

$versions = $finder->getVersionCollection();
$migrator = new Migrator($session, $versionCollection, $storage);

$to = '201504241744';
$output = new NullOutput();
$migrator->migrate($to, $output);

您还可以创建一个工厂类(当您使用依赖注入时很有用)

<?php

$factory = new MigratorFactory($storage, $finder, $session);
$migrator = $factory->getMigrator();

初始化

当您首次安装项目时,您需要初始化版本

<?php

$migrator->initialize();

这应该是您构建过程的一部分,它将所有版本添加到内容仓库的迁移版本节点中。

迁移

$migrator->migrate('201501011200', $output); // migrate to a specific version
$migrator->migrate('up', $output); // migrate up a version
$migrator->migrate('down', $output); // migrate down a version
$migrator->migrate('top', $output); // migrate to the latest version
$migrator->migrate('bottom', $output); // revert all versions

列出版本

您可以从 VersionCollection 对象中访问有关可用版本的信息

$versionCollection->getAllVersions();

确定当前版本

您可以从 VersionStorage 对象中确定当前版本

$versionStroage->getCurrentVersion();

版本类

版本类包含 updown 方法。类相当简单

<?php

use PHPCR\Migrations\VersionInterface;

class Version201504241200 implements VersionInterface
{
    public function up(SessionInterface $session)
    {
        $session->doSomething();
    }

    public function down(SessionInterface $session)
    {
        $session->undoSomething();
    }
}

它们的名称必须为 VersionYYYMMDDHHMM。如果不是这样的名称,则无法检测到。

down 方法应撤销 up 方法中做出的任何更改。始终检查撤销迁移是否正常工作。