Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace Vendor\MyModule\Plugin\DiCompileExclude;
- use Magento\Setup\Module\Di\App\Task\Operation\ApplicationCodeGenerator;
- use Magento\Setup\Module\Di\Code\Reader\ClassesScanner;
- /**
- * Class ExtendExcludePathsPlugin
- *
- * @package Vendor\MyModule\Plugin\DiCompileExclude
- */
- class ExtendExcludePathsPlugin
- {
- /**
- * @var array
- */
- private $excludePatterns;
- /**
- * ExtendExcludePathsPlugin constructor.
- *
- * @param array $excludePatterns
- */
- public function __construct(array $excludePatterns = [])
- {
- $this->excludePatterns = array_unique(array_values($excludePatterns));
- }
- /**
- * @param ClassesScanner $subject
- * @param string $path
- * @return string
- */
- public function beforeGetList(ClassesScanner $subject, string $path)
- {
- if ($this->excludePatterns) {
- $subject->addExcludePatterns($this->excludePatterns);
- }
- return $path;
- }
- /**
- * @param ApplicationCodeGenerator $subject
- */
- public function beforeDoOperation(ApplicationCodeGenerator $subject)
- {
- if (!$this->excludePatterns) {
- return;
- }
- try {
- $dataArray = new \ReflectionProperty(ApplicationCodeGenerator::class, 'data');
- $dataArray->setAccessible(true);
- $data = $dataArray->getValue($subject);
- $data['excludePatterns'] = $data['excludePatterns'] ?? [];
- array_push($data['excludePatterns'], ...$this->excludePatterns);
- $dataArray->setValue($subject, $data);
- } catch (\ReflectionException $e) {
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement