1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Framework\App;
use Magento\Framework\App\ObjectManager\Environment\Compiled;
use Magento\Framework\App\ObjectManager\Environment\Developer;
use Magento\Framework\App\ObjectManager\ConfigLoader;
use Magento\Framework\ObjectManager\RelationsInterface;
use Magento\Framework\ObjectManager\DefinitionInterface;
class EnvironmentFactory
{
/**
* @var RelationsInterface
*/
private $relations;
/**
* @var DefinitionInterface
*/
private $definitions;
/**
* @param RelationsInterface $relations
* @param DefinitionInterface $definitions
*/
public function __construct(
RelationsInterface $relations,
DefinitionInterface $definitions
) {
$this->relations = $relations;
$this->definitions = $definitions;
}
/**
* Create Environment object
*
* @return EnvironmentInterface
*/
public function createEnvironment()
{
switch ($this->getMode()) {
case Compiled::MODE:
return new Compiled($this);
break;
default:
return new Developer($this);
}
}
/**
* Determinate running mode
*
* @return string
*/
private function getMode()
{
if (file_exists(ConfigLoader\Compiled::getFilePath(Area::AREA_GLOBAL))) {
return Compiled::MODE;
}
return Developer::MODE;
}
/**
* Returns definitions
*
* @return DefinitionInterface
*/
public function getDefinitions()
{
return $this->definitions;
}
/**
* Returns relations
*
* @return RelationsInterface
*/
public function getRelations()
{
return $this->relations;
}
}