getMethod($methodName); $method->setAccessible(true); return $method->invokeArgs($object, $parameters); } /** * @param object $object * @param string $propertyName * @param mixed $value * @param string $originalClassName * * @return object * @throws \ReflectionException */ private function setProperty($object, $propertyName, $value, $originalClassName = '') { $reflection = new \ReflectionClass($originalClassName ?: get_class($object)); $property = $reflection->getProperty($propertyName); $property->setAccessible(true); $property->setValue($object, $value); return $object; } /** * @param $object * @param $propertyName * @param string $originalClassName * * @return mixed * @throws \ReflectionException */ private function getProperty($object, $propertyName, $originalClassName = '') { $reflection = new \ReflectionClass($originalClassName ?: get_class($object)); $property = $reflection->getProperty($propertyName); $property->setAccessible(true); return $property->getValue($object); } }