аргументы функции - есть ли константная ссылка?

Дмитрий_rnd

Новичок
аргументы функции - есть ли константная ссылка?

собственно сабж. аля как в с++. Я то понимаю, что никто мне не мешает поставить просто ссылку, но ведь как-то хочется показать, что я никак не буду изменять передаваемый объект. Этот вопрос актуален для 4-го php, где по умолчанию передается копия объекта, а хотелось бы не допускать излишнего копирования. Но и для 5-ки интересно, ведь хочется же даже в объявлении функции показать, что "передайте мне ссылку, но я ничего там менять не буду, а нужно для скорости". Документацию опокопал - ничего не нашел. :(
 

svetasmirnova

маленький монстрик
&$var Читать надо про различия между 4 и 5: они существенные. А тупо делать как в С++ не надо: это другой язык.
 

Дмитрий_rnd

Новичок
про 4 и 5 знаю, поэтому так долго распинался.

я не хочу тупо, я хочу, чтобы по определению функции было понятно, что она ничего не будет менять внутри объекта
 

svetasmirnova

маленький монстрик
Ой! Я слово "константная"-то проглядела :( Нет, в пятёрке они всегда будут передаваться по ссылке, если clone явно не вызвать.

А вообще я не поняла. Ты пишешь:
>хотелось бы не допускать излишнего копирования
и
>я хочу, чтобы по определению функции было понятно, что она ничего не будет менять внутри объекта

В PHP записи, аналогичной CustomType foo(const OtherCustomType bar); нет
 

Дмитрий_rnd

Новичок
просто я буду принудительно ставить & для одинаковой обработки кода и в четверке и в пятерке, но данная запись двусмысленна и подразумевает, что объект внутри функции может быть изменен. А запись типа int my_func(const MyClass& input_var) в сях и имеет ЕДИНСТВЕННОЕ трактование - передача константной ссылки.
 

svetasmirnova

маленький монстрик
В английском языке слово sex тоже имеет однозначное толкование: пол. Только в русском языке это слово обозначает несколько другое. C'est la vie ;)
 
Сверху