This article имеет следующий метод:Передача аргумента по ссылке с отражением
/**
* Call protected/private method of a class.
*
* @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.
*/
public function invokeMethod(&$object, $methodName, array $parameters = array())
{
$reflection = new \ReflectionClass(get_class($object));
$method = $reflection->getMethod($methodName);
$method->setAccessible(true);
return $method->invokeArgs($object, $parameters);
}
Мой вопрос ... есть конкретная причина, почему $object
имеет амперсанд перед ним в объявлении функции? Обычно это означало бы, что вы проходили по ссылке, но не по умолчанию передавали объекты по ссылке?
http://pastebin.com/9M5nEheS похоже, что он передается со ссылкой на меня. – neubert
Я отредактировал свой ответ, чтобы освещать «ссылку на объекты». :-) – Maxime
Из любопытства, как вы думаете, вы могли бы придумать пример, где invokeMethod будет вести себя по-другому, когда амперсанд присутствует, а не когда нет? Это действительно помогло бы мне визуализировать это. Благодаря! – neubert