«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Bootstrap сервисного контейнера: начало работы

Bootstrap сервисного контейнера: начало работы

Опубликовано 7 августа 2024 г.
Просматривать:851

Service Container Bootstrap: Getting Started

Прежде чем начать тему, создайте два новых файла в каталоге контроллеров:

  1. Destroy.php, содержащий код, используемый для удаления заметки из базы данных.
  2. store.php, содержащий код для создания новой заметки с использованием форм и методов запроса.

Введение в сервисный контейнер

Контейнер служб — это шаблон проектирования, который централизует управление зависимостями между объектами, обеспечивая структурированный способ доступа к сервисам и управления ими внутри приложения.

Он действует как реестр услуг на веб-сайте.

Класс контейнера

Сначала создайте файл с именем Controller.php в каталоге Core. При этом инициализируйте класс Container, который отвечает за управление привязками и разрешениями служб.

  • bind(): регистрирует службу в контейнере.
  • resolve(): извлекает сервис из контейнера.
class Container {
    protected $bindings = [];

    public function bind($key, $resolver) {
        $this->bindings[$key] = $resolver;
    }

    public function resolve($key) {
        if (!array_key_exists($key, $this->bindings)) {
            throw new Exception("No matching binding found for {$key}");
        }
        $resolver = $this->bindings[$key];
        return call_user_func($resolver);
    }
}

Класс приложения

Класс App действует как интерфейс для Контейнера, предоставляя удобный интерфейс для доступа к сервисам.

  • setContainer(): устанавливает экземпляр контейнера для приложения.
  • container(): извлекает экземпляр контейнера.
  • bind(): регистрирует службу в контейнере.
  • resolve(): извлекает сервис из контейнера.
class App {
    protected static $container;

    public static function setContainer($container) {
        static::$container = $container;
    }

    public static function container() {
        return static::$container;
    }

    public static function bind($key, $resolver) {
        static::container()->bind($key, $resolver);
    }

    public static function resolve($key) {
        return static::container()->resolve($key);
    }
}

Бутстрап

Bootstrap — это точка приложения, где все настраивается и инициализируется.

$container = new Container();
$container->bind('Core\Database', function () {
    $config = require base_path('config.php');
    return new Database($config['database']);
});
App::setContainer($container);

В этом случае процесс начальной загрузки:

  1. Создает новый экземпляр контейнера ($container)
  2. Регистрирует службы в контейнере, используя метод привязки (например, Core\Database)
  3. Устанавливает контейнер для приложения с помощью App::setContainer($container)

Контроллер

Сервисы можно разрешить из контейнера в контроллерах с помощью метода App::resolve().

$db = App::resolve('Core\Database');

Теперь сервисный контейнер правильно построен, и вы можете видеть, что проект работает хорошо.

Надеюсь, вы это ясно поняли.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/ghulam_mujtaba_247/service-container-bootstrap-getting-started-293j?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3