Доброго времени суток. На просторах интернета умыдрился встрять в холивар по поводу ссылок в PHP. В ходе холивара прозвучали ~следующие аргументы:
1. Ссылки из PHP вот вот выпилят, в версии 5.0+ их оставили как deprecated (я не нашёл никаких подтверждений этому, кроме «выпиливания» someFunction( &link ) )
2. Использование function someFunction( ¶m ){} противоречит «концепции функции», т.к. единственный правильный способ применения функции — $some = someFunction( $some ). Любой иной код — «странный» и так писать не надо.
3. Вместо foreach( $array as &value ){} нужно использовать или $array = array_map( 'func', $array ) или foreach( $array as $key => &value ){ $array[ $key ] = }.
4. Дословно «пхп 5 задал верное поведение. Примитивы именно и нужно передавать как копии (то есть чтобы нельзя было повлиять на примитив, указанный в параметре)».
Мне столь радикальные взгляды на столь удобные и привычные механизмы показались не адекватными. Я полагаю, что каждому инструменту своё место. И что если использование ссылок позволяет упростить код, сделать его «читабельнее», а также повысить его быстродействие, там где это критично, то нет никаких причин от них отказываться.
Я не утверждаю, что все функции должны принимать аргументы по ссылкам, или что кода вида $array = some( $array ) плох, я утверждаю, что «всему своё место». Но у меня сложилось впечатление, что такая позиция уже не «модная», и использование ссылок даже в foreach() уже unmanner.
Вот небольшой склёпанный на коленке
код, похволяющий сравнить производительность в шаровакуумных условиях. Суть вопроса: кто прав? Неужели «концепция применения функции» столь сильна, а ссылки столько сложны для понимания, что их применение неадекватно?