Size: a a a

2020 February 13

DS

Dmitriy S in Yii Framework 3
@samdark, ты читал то, что я писал по роутеру?
источник

AM

Alexander Makarov in Yii Framework 3
вероятно нет
источник

AM

Alexander Makarov in Yii Framework 3
Алексей R
типа не имена классов а произвольные строки
а, ну с ними-то всё просто... если нет в контейнере, то нет
источник

AM

Alexander Makarov in Yii Framework 3
взять неоткуда
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
взять неоткуда
ничего, что провайдер их предоставляет?
источник

AM

Alexander Makarov in Yii Framework 3
чего
источник

AM

Alexander Makarov in Yii Framework 3
в провайдер тоже надо сходить...
источник

AM

Alexander Makarov in Yii Framework 3
источник

AM

Alexander Makarov in Yii Framework 3
если да, то читал
источник

А

Алексей R in Yii Framework 3
Привет. Решил почитать readme yii-di и меня смутило некоторое подозрение в том, что контейнер то не совсем PSR-ненький. Поминится, я уже писал примерно тоже самое про ларовский, ну и вот.

Секция
[Using deferred service providers](https://github.com/yiisoft/di#using-deferred-service-providers)
код:

// returns false as provider wasn't registered
$container->has(EngineInterface::class);

// returns SolarEngine, registered in the provider
$engine = $container->get(EngineInterface::class);

// returns true as provider was registered when EngineInterface was requested from the container
$container->has(EngineInterface::class);

Читаем описание has() на php.fig:

[1.1.2 Reading from a container](https://www.php-fig.org/psr/psr-11/#112-reading-from-a-container)
has takes one unique parameter: an entry identifier, which MUST be a string. has MUST return true if an entry identifier is known to the container and false if it is not. If has($id) returns false, get($id) MUST throw a NotFoundExceptionInterface.

[3.1. Psr\Container\ContainerInterface](https://www.php-fig.org/psr/psr-11/#31-psrcontainercontainerinterface)
    /**
    * Returns true if the container can return an entry for the given identifier.
    * Returns false otherwise.
    *
    * `has($id)` returning true does not mean that `get($id)` will not throw an exception.
    * It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`.
    *
    * @param string $id Identifier of the entry to look for.
    *
    * @return bool
    */
   public function has($id);

Важно >> Returns true if the container can return an entry for the given identifier

Если get() может вернуть запрошенную сущность, то has() обязана вернуть true, ибо если has() вернёт false, то get() должен выкинуть исключение.
источник

А

Алексей R in Yii Framework 3
вроде тут детально написано )
источник

AM

Alexander Makarov in Yii Framework 3
ну да
источник

А

Алексей R in Yii Framework 3
по карйней мере readme с тех пор не поменялось
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
в провайдер тоже надо сходить...
Можно при регистрации провайдеров брать из метода privides() и записывать в отдельный массив
источник

AM

Alexander Makarov in Yii Framework 3
я поэтому и говорю, что в случае провайдера нужно сгонять в него, спросить
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
я поэтому и говорю, что в случае провайдера нужно сгонять в него, спросить
это очень долго
источник

А

Алексей R in Yii Framework 3
Dmitry поковырялся в коде и вроде как контейнер в провайдер не гоняет
источник

AM

Alexander Makarov in Yii Framework 3
не гоняет
источник

А

Алексей R in Yii Framework 3
а, или гоняет, но не оптимально
источник

DS

Dmitriy S in Yii Framework 3
Алексей R
Dmitry поковырялся в коде и вроде как контейнер в провайдер не гоняет
гонятет только при гет
источник