tldr;composer require illuminate/container
Фасад App::
преобразуется в Illuminate\Foundation\Application::class
, и вспомогательные функции (включая app()
) находятся в том же пространстве имен.Таким образом, вам нужно composer require illuminate/foundation
, чтобы получить это.
Тем не менее, фактический контейнер находится в Illuminate\Container\Container
- это базовый класс, который расширен классом Application
выше, так что вы можете получитьурезанная версия только контейнера с composer require illuminate/container
.
Я также должен отметить, что они имеют одинаковый static::$instance
, поэтому использование контейнера с подсветкой должно работать как в приложениях Laravel, так и в приложениях без Laravel.
Пример разрешения экземпляра и вызова метода с автоматическим внедрением зависимости:
use Illuminate\Container\Container;
$container = Container::getInstance();
$concrete = $container->make(Some\Abstract\Interface::class);
$result = $container->call([$concrete, 'methodWithDependencies']);