Passed
Push — master ( 867787...2f26ff )
by Christoph
33:52 queued 19:34
created

ServiceFactoryRegistration   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 11
dl 0
loc 40
rs 10
c 1
b 0
f 0
wmc 4

4 Methods

Rating   Name   Duplication   Size   Complexity  
A getFactory() 0 2 1
A isShared() 0 2 1
A __construct() 0 8 1
A getName() 0 2 1
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * @copyright 2021 Christoph Wurst <[email protected]>
7
 *
8
 * @author 2021 Christoph Wurst <[email protected]>
9
 *
10
 * @license GNU AGPL version 3 or any later version
11
 *
12
 * This program is free software: you can redistribute it and/or modify
13
 * it under the terms of the GNU Affero General Public License as
14
 * published by the Free Software Foundation, either version 3 of the
15
 * License, or (at your option) any later version.
16
 *
17
 * This program is distributed in the hope that it will be useful,
18
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20
 * GNU Affero General Public License for more details.
21
 *
22
 * You should have received a copy of the GNU Affero General Public License
23
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
24
 */
25
26
namespace OC\AppFramework\Bootstrap;
27
28
/**
29
 * @psalm-immutable
30
 */
31
class ServiceFactoryRegistration extends ARegistration {
32
33
	/**
34
	 * @var string
35
	 * @psalm-var string|class-string
36
	 */
37
	private $name;
38
39
	/**
40
	 * @var callable
41
	 * @psalm-var callable(\Psr\Container\ContainerInterface): mixed
42
	 */
43
	private $factory;
44
45
	/** @var bool */
46
	private $shared;
47
48
	public function __construct(string $appId,
49
								string $alias,
50
								callable $target,
51
								bool $shared) {
52
		parent::__construct($appId);
53
		$this->name = $alias;
54
		$this->factory = $target;
55
		$this->shared = $shared;
56
	}
57
58
	public function getName(): string {
59
		return $this->name;
60
	}
61
62
	/**
63
	 * @psalm-return callable(\Psr\Container\ContainerInterface): mixed
64
	 */
65
	public function getFactory(): callable {
66
		return $this->factory;
67
	}
68
69
	public function isShared(): bool {
70
		return $this->shared;
71
	}
72
}
73