From be1be3ab6462cbf49250bf9c15b37aa53223b104 Mon Sep 17 00:00:00 2001 From: Dominik Liebler Date: Mon, 26 Aug 2019 06:40:18 +0200 Subject: [PATCH] introduced Service interface to ServiceLocator --- More/ServiceLocator/LogService.php | 3 +- More/ServiceLocator/Service.php | 8 +++++ More/ServiceLocator/ServiceLocator.php | 42 +++++-------------------- More/ServiceLocator/uml/uml.png | Bin 14374 -> 30794 bytes 4 files changed, 17 insertions(+), 36 deletions(-) create mode 100644 More/ServiceLocator/Service.php diff --git a/More/ServiceLocator/LogService.php b/More/ServiceLocator/LogService.php index 84c999c..1653a0b 100644 --- a/More/ServiceLocator/LogService.php +++ b/More/ServiceLocator/LogService.php @@ -2,6 +2,7 @@ namespace DesignPatterns\More\ServiceLocator; -class LogService +class LogService implements Service { + } diff --git a/More/ServiceLocator/Service.php b/More/ServiceLocator/Service.php new file mode 100644 index 0000000..73bec99 --- /dev/null +++ b/More/ServiceLocator/Service.php @@ -0,0 +1,8 @@ +services[$class] = $service; $this->instantiated[$class] = $service; - $this->shared[$class] = $share; } - /** - * instead of supplying a class here, you could also store a service for an interface - * - * @param string $class - * @param array $params - * @param bool $share - */ - public function addClass(string $class, array $params, bool $share = true) + public function addClass(string $class, array $params) { $this->services[$class] = $params; - $this->shared[$class] = $share; } public function has(string $interface): bool @@ -51,14 +30,9 @@ class ServiceLocator return isset($this->services[$interface]) || isset($this->instantiated[$interface]); } - /** - * @param string $class - * - * @return object - */ - public function get(string $class) + public function get(string $class): Service { - if (isset($this->instantiated[$class]) && $this->shared[$class]) { + if (isset($this->instantiated[$class])) { return $this->instantiated[$class]; } @@ -81,9 +55,7 @@ class ServiceLocator throw new \OutOfRangeException('Too many arguments given'); } - if ($this->shared[$class]) { - $this->instantiated[$class] = $object; - } + $this->instantiated[$class] = $object; return $object; } diff --git a/More/ServiceLocator/uml/uml.png b/More/ServiceLocator/uml/uml.png index 1136eaa23d589e1f6743d8570c30b430b46205a7..7d878c01a813142e09588af983119ec5ca658a7c 100644 GIT binary patch literal 30794 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 literal 14374 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