Я создаю свой собственный контейнер, я создал метод «bind», который получает «строковый псевдоним» и «Закрытие $ закрытия». способ связать псевдоним объекта в массиве $ контейнера, так:Что добавить в мой контейнер ioc? php
public function bind(string $alias,$closure)
{
$this->container[$alias] = $closure();
}
Второй метод «вызов», который просто позвонить в какой-то экземпляр от $ контейнера. Конечно, сначала метод проверяет, существует ли данный псевдоним, и если не выбрасывает исключение
public function call(string $alias)
{
if(array_key_exists($alias,$this->container))
return $this->container[$alias];
throw new \Exception();
}
это хорошо? что мне нужно добавить? потому что я видел на laravel, например, что контейнер полон метода и реквизита, и я не знаю почему. его просто связать и позвонить, разве?
Я лично сохранил бы закрытие и позвонил по требованию, а не по связи. С одной стороны, вам может не понадобиться все связанные объекты во время одного вызова, поэтому вы сохраняете при распределении ресурсов, с другой стороны, состояние связанного объекта может зависеть от того, когда он называется скорее, когда его привязка. – apokryfos
Почему мне нужно сохранить закрытие? что я могу с этим сделать? – user412499