Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Interception.php
Go to the documentation of this file.
1 <?php
7 
14 
16 {
20  private $areaList;
21 
25  private $interceptionConfigurationBuilder;
26 
30  private $data = [];
31 
35  private $classesScanner;
36 
40  private $generatorFactory;
41 
49  public function __construct(
50  InterceptionConfigurationBuilder $interceptionConfigurationBuilder,
51  App\AreaList $areaList,
52  ClassesScanner $classesScanner,
53  GeneratorFactory $generatorFactory,
54  $data = []
55  ) {
56  $this->interceptionConfigurationBuilder = $interceptionConfigurationBuilder;
57  $this->areaList = $areaList;
58  $this->data = $data;
59  $this->classesScanner = $classesScanner;
60  $this->generatorFactory = $generatorFactory;
61  }
62 
66  public function doOperation()
67  {
68  if (empty($this->data)) {
69  return;
70  }
71  $this->interceptionConfigurationBuilder->addAreaCode(App\Area::AREA_GLOBAL);
72 
73  foreach ($this->areaList->getCodes() as $areaCode) {
74  $this->interceptionConfigurationBuilder->addAreaCode($areaCode);
75  }
76 
77  $classesList = [];
78  foreach ($this->data['intercepted_paths'] as $paths) {
79  if (!is_array($paths)) {
80  $paths = (array)$paths;
81  }
82  foreach ($paths as $path) {
83  $classesList = array_merge($classesList, $this->classesScanner->getList($path));
84  }
85  }
86 
87  $generatorIo = new \Magento\Framework\Code\Generator\Io(
88  new \Magento\Framework\Filesystem\Driver\File(),
89  $this->data['path_to_store']
90  );
91  $generator = $this->generatorFactory->create(
92  [
93  'ioObject' => $generatorIo,
94  'generatedEntities' => [
95  Interceptor::ENTITY_TYPE => \Magento\Setup\Module\Di\Code\Generator\Interceptor::class,
96  ]
97  ]
98  );
99  $configuration = $this->interceptionConfigurationBuilder->getInterceptionConfiguration($classesList);
100  $generator->generateList($configuration);
101  }
102 
108  public function getName()
109  {
110  return 'Interceptors generation';
111  }
112 }
$configuration
Definition: index.php:33
__construct(InterceptionConfigurationBuilder $interceptionConfigurationBuilder, App\AreaList $areaList, ClassesScanner $classesScanner, GeneratorFactory $generatorFactory, $data=[])
$generatorIo
Definition: autoload.php:15
$paths
Definition: _bootstrap.php:83