| @@ 178-194 (lines=17) @@ | ||
| 175 | * @param string $accessor |
|
| 176 | * @return mixed |
|
| 177 | */ |
|
| 178 | protected function extractWithAccessor($subject, $propertyName, $accessor) |
|
| 179 | { |
|
| 180 | if ($accessor === self::ACCESSOR_ARRAY && is_array($subject) && array_key_exists($propertyName, $subject) |
|
| 181 | || $subject instanceof \ArrayAccess && $subject->offsetExists($propertyName) |
|
| 182 | ) { |
|
| 183 | return $subject[$propertyName]; |
|
| 184 | } elseif (is_object($subject)) { |
|
| 185 | if ($accessor === self::ACCESSOR_GETTER) { |
|
| 186 | return call_user_func_array([$subject, 'get' . ucfirst($propertyName)], []); |
|
| 187 | } elseif ($accessor === self::ACCESSOR_ASSERTER) { |
|
| 188 | return $this->extractThroughAsserter($subject, $propertyName); |
|
| 189 | } elseif ($accessor === self::ACCESSOR_PUBLICPROPERTY && property_exists($subject, $propertyName)) { |
|
| 190 | return $subject->$propertyName; |
|
| 191 | } |
|
| 192 | } |
|
| 193 | return null; |
|
| 194 | } |
|
| 195 | ||
| 196 | /** |
|
| 197 | * Detect which type of accessor to use when extracting |
|
| @@ 326-342 (lines=17) @@ | ||
| 323 | * @param string $accessor |
|
| 324 | * @return mixed |
|
| 325 | */ |
|
| 326 | protected function extractWithAccessor($subject, $propertyName, $accessor) |
|
| 327 | { |
|
| 328 | if ($accessor === self::ACCESSOR_ARRAY && is_array($subject) && array_key_exists($propertyName, $subject) |
|
| 329 | || $subject instanceof \ArrayAccess && $subject->offsetExists($propertyName) |
|
| 330 | ) { |
|
| 331 | return $subject[$propertyName]; |
|
| 332 | } elseif (is_object($subject)) { |
|
| 333 | if ($accessor === self::ACCESSOR_GETTER) { |
|
| 334 | return call_user_func_array([$subject, 'get' . ucfirst($propertyName)], []); |
|
| 335 | } elseif ($accessor === self::ACCESSOR_ASSERTER) { |
|
| 336 | return $this->extractThroughAsserter($subject, $propertyName); |
|
| 337 | } elseif ($accessor === self::ACCESSOR_PUBLICPROPERTY && property_exists($subject, $propertyName)) { |
|
| 338 | return $subject->$propertyName; |
|
| 339 | } |
|
| 340 | } |
|
| 341 | return null; |
|
| 342 | } |
|
| 343 | ||
| 344 | /** |
|
| 345 | * Detect which type of accessor to use when extracting |
|