HEX
Server: LiteSpeed
System: Linux s3.sitechai.com 4.18.0-553.51.1.lve.1.el8.x86_64 #1 SMP Wed May 14 14:34:57 UTC 2025 x86_64
User: workzeni (2217)
PHP: 8.1.32
Disabled: mail, show_source, system, shell_exec, passthru, exec, eval, shell
Upload Files
File: /home/workzeni/stream-flix.workzenix.com/vendor/pestphp/pest-plugin-mutate/src/Event/Facade.php
<?php

declare(strict_types=1);

namespace Pest\Mutate\Event;

use Pest\Mutate\Contracts\Subscriber;
use ReflectionClass;

class Facade
{
    private static ?self $instance = null;

    /**
     * @var array<class-string<Subscriber>, array<int, Subscriber>>
     */
    private array $subscribers = [];

    public static function instance(): self
    {
        if (! isset(self::$instance)) {
            self::$instance = new self;
        }

        return self::$instance;
    }

    /**
     * @return array<class-string<Subscriber>, array<int, Subscriber>>
     */
    public function subscribers(): array
    {
        return $this->subscribers;
    }

    public function emitter(): Emitter
    {
        return Emitter::instance();
    }

    public function registerSubscriber(Subscriber $subscriber): void
    {
        $reflection = new ReflectionClass($subscriber);

        $this->subscribers[$reflection->getInterfaceNames()[0]][] = $subscriber; // @phpstan-ignore-line
    }

    public function registerSubscribers(Subscriber ...$subscribers): void
    {
        foreach ($subscribers as $subscriber) {
            $this->registerSubscriber($subscriber);
        }
    }
}