mepihindeveloper / php-service-locator
Компонент-контейнер для работы с экземплярами классов-служб
Requires
- php: >=7.4
- psr/container: ^1.1
Requires (Dev)
- codeception/codeception: ^4.1
- codeception/module-asserts: ^1.0.0
- codeception/module-phpbrowser: ^1.0.0
This package is auto-updated.
Last update: 2024-11-29 06:36:10 UTC
README
Компонент-контейнер для работы с экземплярами классов-служб. Реализует логику контейнера служб по шаблону проектирования "Локатор служб".
Структура
src/
--- exceptions/
------ ContainerObjectInvalidTypeException.php
--- interfaces/
------ ServiceInterface.php
--- ServiceLocator.php
В директории interfaces
хранятся необходимые интерфейсы, которые необходимо имплементировать в при реализации
собственных классов служб. Класс ServiceLocator
выступает в качестве контейнера служб.
В директории exceptions
хранятся необходимые исключения. Исключение QueryStringNotFoundException
исключение необходимо для обозначения ошибки типа служб в контейнере.
Примерная реализация функционала:
<?php declare(strict_types = 1); use mepihindeveloper\components\container\interfaces\ServiceInterface; use mepihindeveloper\components\container\ServiceLocator; error_reporting(E_ALL); ini_set('display_errors', '1'); ini_set('display_startup_errors', '1'); require_once 'vendor/autoload.php'; $serviceLocator = new ServiceLocator(); // Анонимный класс используется в тестах, но можно реализовать собственный класс. $logger = new class implements ServiceInterface { protected string $filePath; public function __construct(string $filePath = '') { $this->filePath = $filePath; } /** * Получает путь к файлу * * @return string */ public function getFilePath(): string { return $this->filePath; } }; $serviceLocator->addInstance(get_class($logger), $logger); var_dump($serviceLocator->has(get_class($logger)), $serviceLocator->get(get_class($logger))); // OR $serviceLocator->addService(get_class($logger), ['/var/www/']); $logger = $this->serviceLocator->get(get_class($logger)); var_dump($logger->getFilePath()); // /var/www/
Доступные методы
ServiceLocator
Контакты
Вы можете связаться со мной в социальной сети ВКонтакте: ВКонтакте: Максим Епихин
Если удобно писать на почту, то можете воспользоваться этим адресом: mepihindeveloper@gmail.com
Мой канал на YouTube, который посвящен разработке веб и игровых проектов: YouTube: Максим Епихин
Поддержать меня можно переводом на Яндекс.Деньги: Денежный перевод