Как перевести абстрактную фабрику в сервис-провайдер laravel? - PullRequest
0 голосов
/ 15 октября 2018

Как я могу переместить это к поставщику услуг?

 class AbstractFactory
{
    /** @var array */
    private $factories = [
        "Generic" => Generic::class,
        "first" => first::class,
        "second" => second::class,
        "third" => third::class,
    ];


    public function __call($name, $arguments)
    {
        if (!isset($this->factories[$name])) {
            throw new \Exception("Factory not found for type: $name");
        }

        $factory = app($this->factories[$name]);

        return $factory->create(...$arguments);
    }
} 

Прямо сейчас каждая фабрика имеет различную реализацию интерфейса.

Хорошо, теперь я использую эту фабрику следующим образом.

abstract AbstractClass{
    public function __construct()
    {
        $this->eventFactory = new AbstractFactory();
    }
}

Как мы знаем, мы не можем создать экземпляр абстрактного класса.Есть ли какое-нибудь решение?

...