From 0c47f8464f7578330bd4e81947c8d4d48d44669a Mon Sep 17 00:00:00 2001 From: Nikolay Lobachev Date: Sat, 17 Feb 2018 21:24:57 +0100 Subject: [PATCH] Use interface instead of classe, if it is possible (#3777) --- src/Command/Shared/ServicesTrait.php | 24 +++++++++++++++++++ .../src/TwigExtension/twig-extension.php.twig | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/Command/Shared/ServicesTrait.php b/src/Command/Shared/ServicesTrait.php index 6eda26a4b..4543128c3 100644 --- a/src/Command/Shared/ServicesTrait.php +++ b/src/Command/Shared/ServicesTrait.php @@ -59,6 +59,7 @@ public function buildServices($services) if (!empty($services)) { foreach ($services as $service) { $class = get_class($this->container->get($service)); + $class = $this->getInterface($class); $shortClass = explode('\\', $class); $machineName = str_replace('.', '_', $service); $buildServices[$service] = [ @@ -73,4 +74,27 @@ public function buildServices($services) return $buildServices; } + + /** + * Gets class interface. + * + * @param string $class + * Class name. + * + * @return string + * Interface + */ + private function getInterface($class) { + $interfaceName = $class; + $interfaces = class_implements($class); + if (!empty($interfaces)) { + if (count($interfaces) == 1) { + $interfaceName = array_shift($interfaces); + } elseif ($key = array_search($class . 'Interface', $interfaces)) { + $interfaceName = $interfaces[$key]; + } + } + + return $interfaceName; + } } diff --git a/templates/module/src/TwigExtension/twig-extension.php.twig b/templates/module/src/TwigExtension/twig-extension.php.twig index 362e65d5f..d829d560c 100644 --- a/templates/module/src/TwigExtension/twig-extension.php.twig +++ b/templates/module/src/TwigExtension/twig-extension.php.twig @@ -24,7 +24,7 @@ class {{ class }} extends \Twig_Extension {% endblock %} /** * {{ service.class }} definition. * - * @var \{{ service.class }} + * @var {{ service.short }} */ protected ${{service.camel_case_name}}; {% endfor %}