$this->readInfoExtractor =
$readInfoExtractor ??
new ReflectionExtractor([], null, null, false
);
$this->writeInfoExtractor =
$writeInfoExtractor ??
new ReflectionExtractor(['set'
], null, null, false
);
} public function getValue(object|array
$objectOrArray, string|PropertyPathInterface
$propertyPath): mixed
{ $zval =
[ self::VALUE =>
$objectOrArray,
];
if (\
is_object($objectOrArray) && false ===
strpbrk((string) $propertyPath, '.[?'
)) { return $this->
readProperty($zval,
$propertyPath,
$this->ignoreInvalidProperty
)[self::VALUE
];
} $propertyPath =
$this->
getPropertyPath($propertyPath);
$propertyValues =
$this->
readPropertiesUntil($zval,
$propertyPath,
$propertyPath->
getLength(),
$this->ignoreInvalidIndices
);
return $propertyValues[\
count($propertyValues) - 1
][self::VALUE
];
} /**
* @return void
*/