Список сервис-провайдеров можно посмотреть в файле config\app.php в массиве providers.
Глобальный объект создается в файле bootstrap\app.php
$app = new Illuminate\Foundation\Application( realpath(__DIR__.'/../') );на основе класса Application из файла vendor\laravel\framework\src\Illuminate\Foundation\Application.php который так же наследует класс сервис-контейнера Container (файл vendor\laravel\framework\src\Illuminate\Container\Container.php)
Получить доступ к глобальному объекту (например из методов контроллера) можно с помощью функции-помошника:
app()которая вызывает статический метод getInstance() класса Container, возвращающий экземпляр контейнера, содержащийся в свойстве
protected static $instance.
Поэтому получить доступ можно и таким вызовом:
use Illuminate\Container\Container; … Container::getInstance()
то же самое используя фасад App:
use App; … App::getInstance()
Касательно фасада App - регистрация глобального объекта в сервис-контейнере (а класс глобального объекта Application наследует от класса сервис контейнера Container) по алиасу 'app' осуществляется с помощью метода registerBaseBindings() класса Application (файл vendor\laravel\framework\src\Illuminate\Foundation\Application.php)
Получив глобальный объект класса Application, можно вывести на экран его свойства (в т.ч. защищенные):
dump(app());
Посмотреть список зарегистрированных сервисов можно раскрыв свойство bindings:

Если другие свойства не интересуют, то можно сразу вывести только свойство bindings:
dump(app()->getBindings());
Получив доступ к глобальному объекту, можно получить доступ к любому другому объекту, зарегистрированному в сервис-контейнере. А это все самые используемые в работе объекты.
Прежде всего доступ к определенному сервису (объекту) можно получить с помощью механизма внедрения зависимостей (Dependency injection container), который реализует сервис-контейнер в Laravel. Например нужно получить объект текущего запроса Request в методе контроллера:
public function form(Request $request){}далее просто используем полученный объект в нужных целях::
if($request->isMethod('post')){}В Laravel, внедрить нужную зависимость можно в любой метод любого класса, который регистрируется в сервис-контейнере.
Так же, для того, чтобы «вытащить» нужный объект из сервис-контейнера, используется метод make().
Например получим объект AuthManager, который работает с аутентификацией пользователей:
app()->make('auth')в качестве аргумента, методу make() нужно передать строковый ключ, по которому нужный класс-сервис зарегистрирован в сервис контейнере. В данном случае это 'auth'.
Обычно, в качестве таких ключей указываются алиасы. Список доступных алиасов можно посмотреть в файле config\app.php в массиве «aliases» где мы увидим и данный алиас:
'Auth' => Illuminate\Support\Facades\Auth::class,
Так же, есть и более простой синтаксис для получения нужного объекта из сервис-контейнера. Получим объект AuthManager:
app('auth')
Вот код функции-помошника app():
function app($abstract = null, array $parameters = []) { if (is_null($abstract)) { return Container::getInstance(); } return empty($parameters) ? Container::getInstance()->make($abstract) : Container::getInstance()->makeWith($abstract, $parameters); }тут видим, что при передаче в качестве первого аргумента строкового ключа (алиаса) нужного объекта, как раз вызывается тот самый метод make() сданным аргументом.
Подробнее прочитать про использование сервис-контейнера, сервис провайдеры и фасады можно в статье Архитектура Laravel - практическое применение.