Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
RepositoryScanner.php
Go to the documentation of this file.
1 <?php
7 
9 
14 {
18  private $useAutoload = true;
19 
26  public function collectEntities(array $files)
27  {
28  $repositoryClassNames = [];
29  foreach ($files as $fileName) {
30  $dom = new \DOMDocument();
31  $dom->loadXML(file_get_contents($fileName));
32  $xpath = new \DOMXPath($dom);
34  foreach ($xpath->query('//preference') as $node) {
35  $forType = $node->attributes->getNamedItem('for');
36  $replacementType = $node->attributes->getNamedItem('type');
37  if ($forType !== null
38  && $replacementType !== null
39  && (substr($forType->nodeValue, -19) == 'RepositoryInterface')
40  ) {
41  if (!class_exists($replacementType->nodeValue, false)
42  && !AutoloaderRegistry::getAutoloader()->loadClass($replacementType->nodeValue)) {
43  $persistor = str_replace('\\Repository', 'InterfacePersistor', $replacementType->nodeValue);
44  $factory = str_replace('\\Repository', 'InterfaceFactory', $replacementType->nodeValue);
45  $searchResultFactory
46  = str_replace('\\Repository', 'SearchResultInterfaceFactory', $replacementType->nodeValue);
47  $repositoryClassNames[$persistor] = $persistor;
48  $repositoryClassNames[$factory] = $factory;
49  $repositoryClassNames[$searchResultFactory] = $searchResultFactory;
50  $repositoryClassNames[$replacementType->nodeValue] = $replacementType->nodeValue;
51  }
52  }
53  }
54  }
55  return $repositoryClassNames;
56  }
57 
64  public function setUseAutoload($useAutoload)
65  {
66  $this->useAutoload = $useAutoload;
67  }
68 }
$fileName
Definition: translate.phtml:15
foreach($appDirs as $dir) $files