80 lines
2.2 KiB
PHP
80 lines
2.2 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
|
|
{
|
|
/** @var EventManager */
|
|
private $eventManager;
|
|
|
|
/** @var Connection */
|
|
private $connection;
|
|
|
|
public function __construct(Connection $connection, EventManager $eventManager)
|
|
{
|
|
$this->eventManager = $eventManager;
|
|
$this->connection = $connection;
|
|
}
|
|
|
|
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 $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
|
|
);
|
|
}
|
|
}
|