Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ConstructorArgumentTypes.php
Go to the documentation of this file.
1 <?php
7 
9 
11 {
15  protected $argumentsReader;
16 
21 
26  public function __construct(
27  \Magento\Framework\Code\Reader\ArgumentsReader $argumentsReader = null,
28  \Magento\Framework\Code\Reader\SourceArgumentsReader $sourceArgumentsReader = null
29  ) {
30  $this->argumentsReader = $argumentsReader ?: new \Magento\Framework\Code\Reader\ArgumentsReader();
31  $this->sourceArgumentsReader =
32  $sourceArgumentsReader ?: new \Magento\Framework\Code\Reader\SourceArgumentsReader();
33  }
34 
42  public function validate($className)
43  {
44  $class = new \ReflectionClass($className);
45  $expectedArguments = $this->argumentsReader->getConstructorArguments($class);
46  $actualArguments = array_filter($this->sourceArgumentsReader->getConstructorArgumentTypes($class));
47  $expectedArguments = array_map(function ($element) {
48  return $element['type'];
49  }, $expectedArguments);
50 
51  foreach ($actualArguments as $argument) {
52  if (!in_array($argument, $expectedArguments)) {
53  throw new \Magento\Framework\Exception\ValidatorException(
54  new \Magento\Framework\Phrase(
55  'Invalid constructor argument(s) in %1',
56  [$className]
57  )
58  );
59  }
60  }
61  return true;
62  }
63 }
__construct(\Magento\Framework\Code\Reader\ArgumentsReader $argumentsReader=null, \Magento\Framework\Code\Reader\SourceArgumentsReader $sourceArgumentsReader=null)
$_option $_optionId $class
Definition: date.phtml:13
if($currentSelectedMethod==$_code) $className
Definition: form.phtml:31
$element
Definition: element.phtml:12