ReferenceFacade   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 4
eloc 15
c 1
b 0
f 0
dl 0
loc 38
ccs 14
cts 14
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A getDependencyReference() 0 16 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace SixtyEightPublishers\Asset\DI;
6
7
use Nette;
8
9
final class ReferenceFacade
10
{
11
	use Nette\SmartObject;
12
13
	/** @var \Nette\DI\CompilerExtension  */
14
	private $extension;
15
16
	/**
17
	 * @param \Nette\DI\CompilerExtension $extension
18
	 */
19 1
	public function __construct(Nette\DI\CompilerExtension $extension)
20
	{
21 1
		$this->extension = $extension;
22 1
	}
23
24
	/**
25
	 * @param string|\Nette\DI\Statement $definition
26
	 * @param string                     $registrationName
27
	 * @param string                     $type
28
	 *
29
	 * @return string
30
	 */
31 1
	public function getDependencyReference($definition, string $registrationName, string $type): string
32
	{
33 1
		if (!is_string($definition) || !Nette\Utils\Strings::startsWith($definition, '@')) {
34 1
			$this->extension
35 1
				->getContainerBuilder()
36 1
				->addDefinition($registrationName = $this->extension->prefix($registrationName))
37 1
				->setType($type)
38 1
				->setFactory($definition)
39 1
				->addTag(Nette\DI\Extensions\InjectExtension::TAG_INJECT);
40
41 1
			$registrationName = '@' . $registrationName;
42
		} else {
43 1
			$registrationName = $definition;
44
		}
45
46 1
		return $registrationName;
47
	}
48
}
49