Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
InheritanceInterceptorScanner.php
Go to the documentation of this file.
1 <?php
7 
9 
11 {
15  private $interceptableValidator;
16 
20  public function __construct(InterceptableValidator $interceptableValidator)
21  {
22  $this->interceptableValidator = $interceptableValidator;
23  }
24 
32  public function collectEntities(array $classes, array $interceptedEntities = [])
33  {
34  $output = [];
35  foreach ($classes as $class) {
36  foreach ($interceptedEntities as $interceptorClass) {
37  $interceptedEntity = substr($interceptorClass, 0, -12);
38  if (is_subclass_of($class, $interceptedEntity) && $this->interceptableValidator->validate($class)) {
39  $reflectionClass = new \ReflectionClass($class);
40  if (!$reflectionClass->isAbstract() && !$reflectionClass->isFinal()) {
41  $output[] = $class . '\\Interceptor';
42  }
43  }
44  }
45  }
46  $output = array_merge($this->filterOutAbstractClasses($interceptedEntities), $output);
47  $output = array_unique($output);
48  return $output;
49  }
50 
57  private function filterOutAbstractClasses($interceptedEntities)
58  {
59  $interceptedEntitiesFiltered = [];
60  foreach ($interceptedEntities as $interceptorClass) {
61  $interceptedEntity = substr($interceptorClass, 0, -12);
62  $reflectionInterceptedEntity = new \ReflectionClass($interceptedEntity);
63  if (!$reflectionInterceptedEntity->isAbstract() && !$reflectionInterceptedEntity->isFinal()) {
64  $interceptedEntitiesFiltered[] = $interceptorClass;
65  }
66  }
67  return $interceptedEntitiesFiltered;
68  }
69 }
is_subclass_of($obj, $className)
$_option $_optionId $class
Definition: date.phtml:13
$reflectionClass
Definition: categories.php:25