![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/setup/src/Magento/Setup/Module/Di/App/Task/Operation/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Setup\Module\Di\App\Task\Operation; use Magento\Framework\Exception\FileSystemException; use Magento\Setup\Module\Di\App\Task\OperationInterface; use Magento\Setup\Module\Di\Code\Reader\ClassesScanner; use Magento\Setup\Module\Di\Code\Scanner\DirectoryScanner; use Magento\Setup\Module\Di\Code\Scanner\PhpScanner; class ApplicationCodeGenerator implements OperationInterface { /** * @var array */ private $data; /** * @var ClassesScanner */ private $classesScanner; /** * @var PhpScanner */ private $phpScanner; /** * @var DirectoryScanner */ private $directoryScanner; /** * @param ClassesScanner $classesScanner * @param PhpScanner $phpScanner * @param DirectoryScanner $directoryScanner * @param array $data */ public function __construct( ClassesScanner $classesScanner, PhpScanner $phpScanner, DirectoryScanner $directoryScanner, $data = [] ) { $this->data = $data; $this->classesScanner = $classesScanner; $this->phpScanner = $phpScanner; $this->directoryScanner = $directoryScanner; } /** * @inheritdoc */ public function doOperation() { if (array_diff(array_keys($this->data), ['filePatterns', 'paths', 'excludePatterns']) !== array_diff(['filePatterns', 'paths', 'excludePatterns'], array_keys($this->data))) { return; } foreach ($this->data['paths'] as $paths) { if (!is_array($paths)) { $paths = (array)$paths; } $files = $this->getFiles($paths); $entities = $this->phpScanner->collectEntities($files['php'] ?? []); foreach ($entities as $entityName) { class_exists($entityName); } } } /** * Returns operation name * * @return string */ public function getName() { return 'Application code generator'; } /** * Get list if files. * * @param string[] $paths * @return array * @throws FileSystemException */ private function getFiles(array $paths): array { $files = []; foreach ($paths as $path) { $this->classesScanner->getList($path); $files[] = $this->directoryScanner->scan( $path, $this->data['filePatterns'], $this->data['excludePatterns'] ); } return array_merge_recursive([], ...$files); } }