РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
962 of 1392 menu

Функция resolve

Функция resolve предназначена для получения экземпляра класса или значения из сервис-контейнера Laravel. Она принимает строковый идентификатор класса или интерфейса, а также опциональный массив параметров для конструктора. Функция автоматически разрешает все зависимости и возвращает готовый экземпляр.

Если переданная строка не зарегистрирована в контейнере, функция попытается создать экземпляр класса через рефлексию, автоматически внедряя зависимости. Это делает resolve мощным инструментом для работы с инверсией управления.

Синтаксис

<?php resolve($abstract, $parameters = []); ?>

Пример

Рассмотрим простой пример использования функции для получения экземпляра класса:

<?php use App\Models\User; use Illuminate\Http\Request; class UserController extends Controller { public function show() { $user = resolve(User::class); $res = get_class($user); echo $res; } } ?>

Результат выполнения кода:

"App\Models\User"

Пример

Функция resolve может принимать массив параметров для конструктора. Рассмотрим пример с пользовательским классом:

<?php namespace App\Services; class UserService { protected $name; protected $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function getInfo() { return "Name: {$this->name}, Age: {$this->age}"; } } ?>
<?php use App\Services\UserService; class UserController extends Controller { public function show() { $service = resolve(UserService::class, ['name' => 'John', 'age' => 25]); $res = $service->getInfo(); echo $res; } } ?>

Результат выполнения кода:

"Name: John, Age: 25"

Пример

Функция resolve также умеет разрешать интерфейсы, если в контейнере зарегистрирована соответствующая реализация. Рассмотрим пример:

<?php namespace App\Contracts; interface LoggerInterface { public function log($message); } ?>
<?php namespace App\Services; use App\Contracts\LoggerInterface; class FileLogger implements LoggerInterface { public function log($message) { return "Logging to file: " . $message; } } ?>
<?php namespace App\Providers; use App\Contracts\LoggerInterface; use App\Services\FileLogger; class AppServiceProvider extends ServiceProvider { public function register() { $this->app->bind(LoggerInterface::class, FileLogger::class); } } ?>
<?php use App\Contracts\LoggerInterface; class UserController extends Controller { public function show() { $logger = resolve(LoggerInterface::class); $res = $logger->log('User logged in'); echo $res; } } ?>

Результат выполнения кода:

"Logging to file: User logged in"

Смотрите также

  • функция app,
    которая возвращает экземпляр приложения или получает значение из контейнера
  • функция dd,
    которая выводит данные и останавливает выполнение скрипта
  • функция dump,
    которая выводит данные для отладки
  • функция collect,
    которая создаёт коллекцию из переданных данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить