23 public function __construct(\
Magento\Framework\Code\Reader\ArgumentsReader $argumentsReader =
null)
25 $this->_argumentsReader = $argumentsReader ?: new \Magento\Framework\Code\Reader\ArgumentsReader();
40 $parent =
$class->getParentClass();
48 $parentArguments = $this->_argumentsReader->getConstructorArguments($parent,
true,
true);
49 if (empty($parentArguments)) {
54 $classArguments = $this->_argumentsReader->getConstructorArguments(
$class);
55 if (
null === $classArguments) {
60 $callArguments = $this->_argumentsReader->getParentCall(
$class, $classArguments);
61 if (
null === $callArguments) {
66 $parentArguments = $this->_argumentsReader->getConstructorArguments($parent,
true,
true);
68 foreach ($parentArguments as
$index => $requiredArgument) {
69 if (isset($callArguments[
$index])) {
70 $actualArgument = $callArguments[
$index];
72 if ($requiredArgument[
'isOptional']) {
76 $classPath = str_replace(
'\\',
'/',
$class->getFileName());
77 throw new \Magento\Framework\Exception\ValidatorException(
79 'Missed required argument %1 in parent::__construct call. File: %2',
80 [$requiredArgument[
'name'], $classPath]
85 $isCompatibleTypes = $this->_argumentsReader->isCompatibleType(
86 $requiredArgument[
'type'],
87 $actualArgument[
'type']
89 if (
false == $isCompatibleTypes) {
90 $classPath = str_replace(
'\\',
'/',
$class->getFileName());
91 throw new \Magento\Framework\Exception\ValidatorException(
93 'Incompatible argument type: Required type: %1. Actual type: %2; File: %3%4%5',
94 [$requiredArgument[
'type'], $actualArgument[
'type'], PHP_EOL, $classPath, PHP_EOL]
104 if (count($callArguments) > count($parentArguments)) {
105 $extraParameters = array_slice($callArguments, count($parentArguments));
107 foreach ($extraParameters as $param) {
108 $names[] =
'$' . $param[
'name'];
111 $classPath = str_replace(
'\\',
'/',
$class->getFileName());
112 throw new \Magento\Framework\Exception\ValidatorException(
114 'Extra parameters passed to parent construct: %1. File: %2',
115 [implode(
', ', $names), $classPath]
$_option $_optionId $class
__construct(\Magento\Framework\Code\Reader\ArgumentsReader $argumentsReader=null)