File: /var/www/payments-gateway/vendor/doctrine/migrations/src/EventDispatcher.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,
);
}
}