-
Notifications
You must be signed in to change notification settings - Fork 39
Expand file tree
/
Copy pathAdapterFactory.php
More file actions
121 lines (103 loc) · 3.07 KB
/
AdapterFactory.php
File metadata and controls
121 lines (103 loc) · 3.07 KB
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php
namespace Lexik\Bundle\CurrencyBundle\Adapter;
use Doctrine\ORM\EntityManager;
use Doctrine\Bundle\DoctrineBundle\Registry;
/**
* This class is used to create DoctrineCurrencyAdapter
*
* @author Yoann Aparici <y.aparici@lexik.fr>
* @author Cédric Girard <c.girard@lexik.fr>
*/
class AdapterFactory
{
/**
* @var EntityManager
*/
protected $doctrine;
/**
* @var array
*/
private $currencies;
/**
* @var string
*/
private $currencyClass;
/**
* __construct
*
* @param EntityManager $em
*/
public function __construct(Registry $doctrine, $defaultCurrency, $availableCurrencies, $currencyClass)
{
$this->doctrine = $doctrine;
$this->currencies = array();
$this->currencies['default'] = $defaultCurrency;
$this->currencies['managed'] = $availableCurrencies;
$this->currencyClass = $currencyClass;
}
/**
* Create an adaper from the given class.
*
* @param string $adapterClass
* @return Lexik\Bundle\CurrencyBundle\Adapter\AbstractCurrencyAdapter
*/
public function create($adapterClass)
{
$adapter = new $adapterClass();
$adapter->setDefaultCurrency($this->currencies['default']);
$adapter->setManagedCurrencies($this->currencies['managed']);
$adapter->setCurrencyClass($this->currencyClass);
return $adapter;
}
/**
* Create a DoctrineCurrencyAdapter.
*
* @return Lexik\Bundle\CurrencyBundle\Adapter\DoctrineCurrencyAdapter
*/
public function createDoctrineAdapter($adapterClass = null, $entityManagerName = null)
{
if (null == $adapterClass) {
$adapterClass = 'Lexik\Bundle\CurrencyBundle\Adapter\DoctrineCurrencyAdapter';
}
$adapter = $this->create($adapterClass);
$em = $this->doctrine->getManager($entityManagerName);
$adapter->setManager($em);
return $adapter;
}
/**
* Create an EcbCurrencyAdapter.
*
* @return Lexik\Bundle\CurrencyBundle\Adapter\EcbCurrencyAdapter
*/
public function createEcbAdapter($adapterClass = null)
{
if (null == $adapterClass) {
$adapterClass = 'Lexik\Bundle\CurrencyBundle\Adapter\EcbCurrencyAdapter';
}
return $this->create($adapterClass);
}
/**
* Create an OerCurrencyAdapter.
*
* @return Lexik\Bundle\CurrencyBundle\Adapter\OerCurrencyAdapter
*/
public function createOerAdapter($adapterClass = null)
{
if (null == $adapterClass) {
$adapterClass = 'Lexik\Bundle\CurrencyBundle\Adapter\OerCurrencyAdapter';
}
return $this->create($adapterClass);
}
/**
* Create an AlphaCurrencyAdapter.
*
* @return Lexik\Bundle\CurrencyBundle\Adapter\AlphaCurrencyAdapter
*/
public function createAlphaAdapter($adapterClass = null)
{
if (null == $adapterClass) {
$adapterClass = 'Lexik\Bundle\CurrencyBundle\Adapter\AlphaCurrencyAdapter';
}
return $this->create($adapterClass);
}
}