invokeMethod($user, 'cryptPassword', array('passwordToCrypt')); * is equal to * $user->cryptPassword('passwordToCrypt'); * (assuming the method was directly publicly accessible * * @param object &$object Instantiated object that we will run method on. * @param string $methodName Method name to call. * @param array $parameters Array of parameters to pass into method. * * @return mixed Method return. */ protected function invokeMethod(&$object, $methodName, array $parameters = []) { $reflection = new ReflectionClass(get_class($object)); $method = $reflection->getMethod($methodName); $method->setAccessible(true); return $method->invokeArgs($object, $parameters); } /** * Gets protected/private property of a class. * * So * $this->invokeProperty($object, '_foo'); * is equal to * $object->_foo * (assuming the property was directly publicly accessible) * * @param object &$object Instantiated object that we want the property off. * @param string $name Property name to fetch. * * @return mixed Property value. */ protected function invokeProperty(&$object, $name) { $reflection = new ReflectionClass(get_class($object)); $property = $reflection->getProperty($name); $property->setAccessible(true); return $property->getValue($object); } }