Из документации к yiisoft/di: In the code above we add a CarFactoryProvider to the container. The register() method of CarFactoryProvider isn't executed until EngineInterface gets requested from the container. When this happens, the container will first check the result of the provides() method. Because EngineInterface is listed there it will then call the register() method of the CarFactoryProvider.
Но это противоречит абзацу описания стандарта PSR-11: 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.
Получается несоответствие стандарту?