tao-test/app/vendor/doctrine/migrations/lib/Doctrine/Migrations/EventDispatcher.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
);
}
}