phpcr / phpcr-migrations
PHPCR 迁移工具
1.4.0
2024-03-16 10:05 UTC
Requires
- php: ^8.1
- phpcr/phpcr: ^2.1
- symfony/console: ^5.4 || ^6.0 || ^7.0
- symfony/finder: ^5.4 || ^6.0 || ^7.0
Requires (Dev)
- handcraftedinthealps/zendsearch: ^2.0
- jackalope/jackalope-fs: ^0.0.4
- phpunit/phpunit: ^9.4
README
受 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();
版本类
版本类包含 up
和 down
方法。类相当简单
<?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
方法中做出的任何更改。始终检查撤销迁移是否正常工作。