PHP - метод может возвратить указатель?

У меня есть метод в классе, пытающемся возвратить указатель:

<?php
public function prepare( $query ) {
    // bla bla bla

    return &$this->statement;
}
?>

Но это производит следующую ошибку:

Ошибка анализа: синтаксическая ошибка, неожиданный '&' в/home/realst34/public_html/s98_fw/classes/sql.php на строке 246

Этот код, однако, работы:

<?php
public function prepare( $query ) {
    // bla bla bla

    $statement = &$this->statement;
    return $statement;
}
?>

Это - просто природа PHP, или я делаю что-то не так?

7
задан Kerry Jones 2 June 2010 в 23:55
поделиться

1 ответ

В PHP нет указателей. У PHP есть ссылка. Ссылка в PHP - это настоящий псевдоним. Но они тебе не нужны. Объекты передаются с помощью дескриптора (поэтому они похожи на ссылки) для других данных. PHP использует механизм копирования при записи, поэтому нет потерь памяти / производительности. Снижение производительности происходит при использовании ссылок, поскольку они отключают копирование при записи и, следовательно, все оптимизации в движке.

Если вы действительно хотите вернуть ссылку, вы должны объявить ее в подписи:

public function &prepare( $query ) {
   // bla bla bla

   return $this->statement;
}

Но, как сказано: если оператор $ this-> является объектом, в этом нет необходимости.

См. Также http://php.net/references

13
ответ дан 6 December 2019 в 19:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: