mepihindeveloper / php-service-locator
用于处理服务类实例的组件容器
v1.0.0
2022-11-01 07:31 UTC
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-09-29 06:14:57 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
联系方式
您可以通过社交网络VKontakte与我联系:VKontakte: Максим Епихин
如果您更愿意通过电子邮件联系,请使用以下邮箱地址:mepihindeveloper@gmail.com
我的YouTube频道,专注于Web和游戏项目开发:YouTube: Максим Епихин
您可以通过以下方式支持我:通过Яндекс.Деньги转账:转账