74 lines
2.1 KiB
PHP
74 lines
2.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Doctrine\Migrations;
|
|
|
|
use Doctrine\Common\EventArgs;
|
|
use Doctrine\Common\EventManager;
|
|
use Doctrine\DBAL\Connection;
|
|
use Doctrine\Migrations\Event\MigrationsEventArgs;
|
|
use Doctrine\Migrations\Event\MigrationsVersionEventArgs;
|
|
use Doctrine\Migrations\Metadata\MigrationPlan;
|
|
use Doctrine\Migrations\Metadata\MigrationPlanList;
|
|
|
|
/**
|
|
* The EventDispatcher class is responsible for dispatching events internally that a user can listen for.
|
|
*
|
|
* @internal
|
|
*/
|
|
final class EventDispatcher
|
|
{
|
|
public function __construct(
|
|
private readonly Connection $connection,
|
|
private readonly EventManager $eventManager,
|
|
) {
|
|
}
|
|
|
|
public function dispatchMigrationEvent(
|
|
string $eventName,
|
|
MigrationPlanList $migrationsPlan,
|
|
MigratorConfiguration $migratorConfiguration,
|
|
): void {
|
|
$event = $this->createMigrationEventArgs($migrationsPlan, $migratorConfiguration);
|
|
|
|
$this->dispatchEvent($eventName, $event);
|
|
}
|
|
|
|
public function dispatchVersionEvent(
|
|
string $eventName,
|
|
MigrationPlan $plan,
|
|
MigratorConfiguration $migratorConfiguration,
|
|
): void {
|
|
$event = $this->createMigrationsVersionEventArgs(
|
|
$plan,
|
|
$migratorConfiguration,
|
|
);
|
|
|
|
$this->dispatchEvent($eventName, $event);
|
|
}
|
|
|
|
private function dispatchEvent(string $eventName, EventArgs|null $args = null): void
|
|
{
|
|
$this->eventManager->dispatchEvent($eventName, $args);
|
|
}
|
|
|
|
private function createMigrationEventArgs(
|
|
MigrationPlanList $migrationsPlan,
|
|
MigratorConfiguration $migratorConfiguration,
|
|
): MigrationsEventArgs {
|
|
return new MigrationsEventArgs($this->connection, $migrationsPlan, $migratorConfiguration);
|
|
}
|
|
|
|
private function createMigrationsVersionEventArgs(
|
|
MigrationPlan $plan,
|
|
MigratorConfiguration $migratorConfiguration,
|
|
): MigrationsVersionEventArgs {
|
|
return new MigrationsVersionEventArgs(
|
|
$this->connection,
|
|
$plan,
|
|
$migratorConfiguration,
|
|
);
|
|
}
|
|
}
|