Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
InterceptorSubstitution.php
Go to the documentation of this file.
1 <?php
7 
9 
11 {
18  public function modify(array $config)
19  {
20  $configKeys = [
21  'arguments',
22  'preferences',
23  'instanceTypes'
24  ];
25  if ($configKeys != array_keys($config)) {
26  return $config;
27  }
28 
29  $interceptors = $this->getInterceptorsList($config['arguments']);
30 
31  $config['arguments'] = array_diff_key($config['arguments'], array_flip($interceptors));
32 
33  foreach ($interceptors as $originalName => $interceptor) {
34  if (isset($config['arguments'][$originalName])) {
35  $config['arguments'][$interceptor] = $config['arguments'][$originalName];
36  unset($config['arguments'][$originalName]);
37  }
38  }
39 
40  $config['preferences'] = $this->resolvePreferences($config['preferences'], $interceptors);
41  $config['preferences'] = array_merge($interceptors, $config['preferences']);
42  $config['instanceTypes'] = $this->resolvePreferences($config['instanceTypes'], $interceptors);
43 
44  return $config;
45  }
46 
53  private function getInterceptorsList(array $arguments)
54  {
55  $interceptors = [];
56 
57  foreach (array_keys($arguments) as $instanceName) {
58  if (substr($instanceName, -12) === '\Interceptor') {
59  $originalName = substr($instanceName, 0, strlen($instanceName) - 12);
60  $interceptors[$originalName] = $instanceName;
61  }
62  }
63 
64  return $interceptors;
65  }
66 
74  private function resolvePreferences(array $preferences, array $interceptors)
75  {
76  foreach ($preferences as &$preference) {
77  if (isset($interceptors[$preference])) {
78  $preference = $interceptors[$preference];
79  }
80  }
81  return $preferences;
82  }
83 }
$config
Definition: fraud_order.php:17
$arguments