Passed
Push — master ( c40970...cb03ce )
by Atanas
03:02
created

InjectionFactory   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 9
c 1
b 0
f 0
dl 0
loc 37
ccs 7
cts 7
cp 1
rs 10
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A make() 0 12 3
A __construct() 0 2 1
1
<?php
2
/**
3
 * @package   WPEmerge
4
 * @author    Atanas Angelov <[email protected]>
5
 * @copyright 2018 Atanas Angelov
6
 * @license   https://www.gnu.org/licenses/gpl-2.0.html GPL-2.0
7
 * @link      https://wpemerge.com/
8
 */
9
10
namespace WPEmerge\Application;
11
12
use WPEmerge\Exceptions\ClassNotFoundException;
13
14
/**
15
 * Injection factory.
16
 */
17
class InjectionFactory {
18
	/**
19
	 * Application.
20
	 *
21
	 * @var Application
22
	 */
23
	protected $app = null;
24
25
	/**
26
	 * Constructor.
27
	 *
28
	 * @codeCoverageIgnore
29
	 * @param Application $app
30
	 */
31
	public function __construct( Application $app ) {
32
		$this->app = $app;
33
	}
34
35
	/**
36
	 * Make a Handler.
37
	 *
38
	 * @throws ClassNotFoundException
39
	 * @param  string $class
40
	 * @return object
41
	 */
42 3
	public function make( $class ) {
43 3
		$instance = $this->app->resolve( $class );
44
45 3
		if ( $instance === null ) {
46 2
			if ( ! class_exists( $class ) ) {
47 1
				throw new ClassNotFoundException( 'Class not found: ' . $class );
48
			}
49
50 1
			$instance = new $class();
51
		}
52
53 2
		return $instance;
54
	}
55
}
56