Что значит запустить функцию PHP, амперсанд?


Я использую библиотеку Facebook с помощью этого кода:

class FacebookRestClient {
...
    public function &users_hasAppPermission($ext_perm, $uid=null) {
        return $this->call_method('facebook.users.hasAppPermission', 
        array('ext_perm' => $ext_perm, 'uid' => $uid));
    }
...
}

что означает & в начале определения функции, и как я могу использовать такую библиотеку (в простом примере)

2 106

2 ответа:

амперсанд перед именем функции означает, что функция возвращает ссылку на переменную, а не значение.

возврат по ссылке полезен, когда вы хотите использовать функцию Найти какой переменной должна быть ссылка связанный. Не используйте возврат по ссылке увеличить производительность. Двигатель автоматически оптимизировать это собственный. Только возвращать ссылки, когда у вас есть действительная техническая причина делать так.

посмотреть Возвращаясь Ссылок.

он возвращает ссылку,как уже упоминалось. В PHP 4 объекты присваивались по значению, как и любое другое значение. Это очень неинтуитивно и противоречит тому, как работает большинство других языков.

чтобы обойти проблему, ссылки использовались для переменных, которые указывали на объекты. В PHP 5, ссылки используются очень редко. Я предполагаю, что это унаследованный код или код, пытающийся сохранить обратную совместимость с PHP 4.