| @@ 118-143 (lines=26) @@ | ||
| 115 | */ |
|
| 116 | private function extendFields(HasFields $original, HasFields $extend): void |
|
| 117 | { |
|
| 118 | foreach ($extend->getFields() as $extendField) { |
|
| 119 | if ($original->hasField($extendField->getName())) { |
|
| 120 | /** |
|
| 121 | * Check field type. |
|
| 122 | * @var FieldDefinition $field |
|
| 123 | */ |
|
| 124 | $field = $original->getField($extendField->getName()); |
|
| 125 | ||
| 126 | $this->getValidator(Inheritance::class)->validate($extendField, $field); |
|
| 127 | ||
| 128 | $this->dataFieldExtender()->call($field, $extendField); |
|
| 129 | ||
| 130 | /** |
|
| 131 | * Check field arguments |
|
| 132 | */ |
|
| 133 | $this->extendArguments($field, $extendField); |
|
| 134 | continue; |
|
| 135 | } |
|
| 136 | ||
| 137 | $callee = function () use ($extendField): void { |
|
| 138 | /** @var BaseFieldsContainer $this */ |
|
| 139 | $this->fields[$extendField->getName()] = $extendField; |
|
| 140 | }; |
|
| 141 | ||
| 142 | $callee->call($original); |
|
| 143 | } |
|
| 144 | } |
|
| 145 | ||
| 146 | /** |
|
| @@ 179-200 (lines=22) @@ | ||
| 176 | */ |
|
| 177 | private function extendArguments($original, $extend): void |
|
| 178 | { |
|
| 179 | foreach ($extend->getArguments() as $extendArgument) { |
|
| 180 | if ($original->hasArgument($extendArgument->getName())) { |
|
| 181 | /** |
|
| 182 | * Check field type. |
|
| 183 | * @var ArgumentDefinition $argument |
|
| 184 | */ |
|
| 185 | $argument = $original->getArgument($extendArgument->getName()); |
|
| 186 | ||
| 187 | $this->getValidator(Inheritance::class)->validate($extendArgument, $argument); |
|
| 188 | ||
| 189 | $this->dataArgumentExtender()->call($argument, $extendArgument); |
|
| 190 | ||
| 191 | continue; |
|
| 192 | } |
|
| 193 | ||
| 194 | $callee = function () use ($extendArgument): void { |
|
| 195 | /** @var BaseArgumentsContainer $this */ |
|
| 196 | $this->arguments[$extendArgument->getName()] = $extendArgument; |
|
| 197 | }; |
|
| 198 | ||
| 199 | $callee->call($original); |
|
| 200 | } |
|
| 201 | } |
|
| 202 | ||
| 203 | /** |
|