У меня есть метод в классе, пытающемся возвратить указатель:
<?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, или я делаю что-то не так?
В PHP нет указателей. У PHP есть ссылка. Ссылка в PHP - это настоящий псевдоним. Но они тебе не нужны. Объекты передаются с помощью дескриптора (поэтому они похожи на ссылки) для других данных. PHP использует механизм копирования при записи, поэтому нет потерь памяти / производительности. Снижение производительности происходит при использовании ссылок, поскольку они отключают копирование при записи и, следовательно, все оптимизации в движке.
Если вы действительно хотите вернуть ссылку, вы должны объявить ее в подписи:
public function &prepare( $query ) {
// bla bla bla
return $this->statement;
}
Но, как сказано: если оператор $ this-> является объектом, в этом нет необходимости.
См. Также http://php.net/references