Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Factory.php
Go to the documentation of this file.
1 <?php
8 
10 
11 class Factory
12 {
14  const CACHE_KEY = __CLASS__;
15 
19  protected $_objectManager;
20 
26  protected $_configFiles = null;
27 
31  private $isDefaultTranslatorInitialized = false;
32 
36  private $moduleReader;
37 
41  private $cache;
42 
46  private $serializer;
47 
51  private $fileIteratorFactory;
52 
60  public function __construct(
62  \Magento\Framework\Module\Dir\Reader $moduleReader,
63  FrontendInterface $cache
64  ) {
65  $this->_objectManager = $objectManager;
66  $this->moduleReader = $moduleReader;
67  $this->cache = $cache;
68  }
69 
75  protected function _initializeConfigList()
76  {
77  if (!$this->_configFiles) {
78  $this->_configFiles = $this->cache->load(self::CACHE_KEY);
79  if (!$this->_configFiles) {
80  $this->_configFiles = $this->moduleReader->getConfigurationFiles('validation.xml');
81  $this->cache->save(
82  $this->getSerializer()->serialize($this->_configFiles->toArray()),
83  self::CACHE_KEY
84  );
85  } else {
86  $filesArray = $this->getSerializer()->unserialize($this->_configFiles);
87  $this->_configFiles = $this->getFileIteratorFactory()->create(array_keys($filesArray));
88  }
89  }
90  }
91 
97  protected function _initializeDefaultTranslator()
98  {
99  if (!$this->isDefaultTranslatorInitialized) {
100  // Pass translations to \Magento\Framework\TranslateInterface from validators
101  $translatorCallback = function () {
102  $argc = func_get_args();
103  return (string)new \Magento\Framework\Phrase(array_shift($argc), $argc);
104  };
106  $translator = $this->_objectManager->create(\Magento\Framework\Translate\Adapter::class);
107  $translator->setOptions(['translator' => $translatorCallback]);
108  \Magento\Framework\Validator\AbstractValidator::setDefaultTranslator($translator);
109  $this->isDefaultTranslatorInitialized = true;
110  }
111  }
112 
120  public function getValidatorConfig()
121  {
122  $this->_initializeConfigList();
123  $this->_initializeDefaultTranslator();
124  return $this->_objectManager->create(
125  \Magento\Framework\Validator\Config::class,
126  ['configFiles' => $this->_configFiles]
127  );
128  }
129 
138  public function createValidatorBuilder($entityName, $groupName, array $builderConfig = null)
139  {
140  $this->_initializeDefaultTranslator();
141  return $this->getValidatorConfig()->createValidatorBuilder($entityName, $groupName, $builderConfig);
142  }
143 
152  public function createValidator($entityName, $groupName, array $builderConfig = null)
153  {
154  $this->_initializeDefaultTranslator();
155  return $this->getValidatorConfig()->createValidator($entityName, $groupName, $builderConfig);
156  }
157 
164  private function getSerializer()
165  {
166  if ($this->serializer === null) {
167  $this->serializer = $this->_objectManager->get(
168  \Magento\Framework\Serialize\SerializerInterface::class
169  );
170  }
171  return $this->serializer;
172  }
173 
180  private function getFileIteratorFactory()
181  {
182  if ($this->fileIteratorFactory === null) {
183  $this->fileIteratorFactory = $this->_objectManager->get(
184  \Magento\Framework\Config\FileIteratorFactory::class
185  );
186  }
187  return $this->fileIteratorFactory;
188  }
189 }
$objectManager
Definition: bootstrap.php:17
createValidatorBuilder($entityName, $groupName, array $builderConfig=null)
Definition: Factory.php:138
createValidator($entityName, $groupName, array $builderConfig=null)
Definition: Factory.php:152
__construct(\Magento\Framework\ObjectManagerInterface $objectManager, \Magento\Framework\Module\Dir\Reader $moduleReader, FrontendInterface $cache)
Definition: Factory.php:60