-
Notifications
You must be signed in to change notification settings - Fork 9.4k
/
Copy pathProxy.php
144 lines (131 loc) · 3.23 KB
/
Proxy.php
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Framework\Translate\Inline;
/**
* Proxy class for \Magento\Framework\Translate\Inline
*/
class Proxy extends \Magento\Framework\Translate\Inline implements
\Magento\Framework\ObjectManager\NoninterceptableInterface
{
/**
* Object Manager instance
*
* @var \Magento\Framework\ObjectManagerInterface
*/
protected $objectManager;
/**
* Proxied instance name
*
* @var string
*/
protected $instanceName;
/**
* Proxied instance
*
* @var \Magento\Framework\Translate\Inline
*/
protected $subject;
/**
* Instance shareability flag
*
* @var bool
*/
protected $isShared;
/**
* @param \Magento\Framework\ObjectManagerInterface $objectManager
* @param string $instanceName
* @param bool $shared
*/
public function __construct(
\Magento\Framework\ObjectManagerInterface $objectManager,
$instanceName = \Magento\Framework\Translate\Inline::class,
$shared = true
) {
$this->objectManager = $objectManager;
$this->instanceName = $instanceName;
$this->isShared = $shared;
}
/**
* Remove links to other objects.
*
* @return array
*/
public function __sleep()
{
return ['subject', 'isShared'];
}
/**
* Retrieve ObjectManager from global scope
*
* @return void
*/
public function __wakeup()
{
$this->objectManager = \Magento\Framework\App\ObjectManager::getInstance();
}
/**
* Clone proxied instance
*
* @return void
*/
public function __clone()
{
$this->subject = clone $this->_getSubject();
}
/**
* Get proxied instance
*
* @return \Magento\Framework\Translate\Inline
*/
protected function _getSubject()
{
if (!$this->subject) {
$this->subject = true === $this->isShared
? $this->objectManager->get($this->instanceName)
: $this->objectManager->create($this->instanceName);
}
return $this->subject;
}
/**
* Check if Inline Translates is allowed
*
* @return bool
*/
public function isAllowed()
{
return $this->_getSubject()->isAllowed();
}
/**
* Retrieve Inline Parser instance
*
* @return \Magento\Framework\Translate\Inline\ParserInterface
*/
public function getParser()
{
return $this->_getSubject()->getParser();
}
/**
* Replace translation templates with HTML fragments
*
* @param array|string $body
* @param bool $isJson
* @return $this
*/
public function processResponseBody(&$body, $isJson = false)
{
return $this->_getSubject()->processResponseBody($body, $isJson);
}
/**
* Additional translation mode html attribute is not needed for base inline translation.
*
* @param mixed|string|null $tagName
* @return mixed
*/
public function getAdditionalHtmlAttribute($tagName = null)
{
return $this->_getSubject()->getAdditionalHtmlAttribute($tagName);
}
}