Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Vendor\MyModule\Plugin\DiCompileExclude;
  4.  
  5. use Magento\Setup\Module\Di\App\Task\Operation\ApplicationCodeGenerator;
  6. use Magento\Setup\Module\Di\Code\Reader\ClassesScanner;
  7.  
  8. /**
  9. * Class ExtendExcludePathsPlugin
  10. *
  11. * @package Vendor\MyModule\Plugin\DiCompileExclude
  12. */
  13. class ExtendExcludePathsPlugin
  14. {
  15. /**
  16. * @var array
  17. */
  18. private $excludePatterns;
  19.  
  20. /**
  21. * ExtendExcludePathsPlugin constructor.
  22. *
  23. * @param array $excludePatterns
  24. */
  25. public function __construct(array $excludePatterns = [])
  26. {
  27. $this->excludePatterns = array_unique(array_values($excludePatterns));
  28. }
  29.  
  30. /**
  31. * @param ClassesScanner $subject
  32. * @param string $path
  33. * @return string
  34. */
  35. public function beforeGetList(ClassesScanner $subject, string $path)
  36. {
  37. if ($this->excludePatterns) {
  38. $subject->addExcludePatterns($this->excludePatterns);
  39. }
  40.  
  41. return $path;
  42. }
  43.  
  44. /**
  45. * @param ApplicationCodeGenerator $subject
  46. */
  47. public function beforeDoOperation(ApplicationCodeGenerator $subject)
  48. {
  49. if (!$this->excludePatterns) {
  50. return;
  51. }
  52.  
  53. try {
  54. $dataArray = new \ReflectionProperty(ApplicationCodeGenerator::class, 'data');
  55. $dataArray->setAccessible(true);
  56.  
  57. $data = $dataArray->getValue($subject);
  58. $data['excludePatterns'] = $data['excludePatterns'] ?? [];
  59. array_push($data['excludePatterns'], ...$this->excludePatterns);
  60.  
  61. $dataArray->setValue($subject, $data);
  62. } catch (\ReflectionException $e) {
  63. }
  64. }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement