Много лет назад я открыл руководство по PHP и начал читать, как если бы я был новичком в этом языке, читая те главы, которые, будем откровенны, не совсем интересны или полезны, а иногда и пропускаются.
И одна вещь привлекла мое внимание в одной главе.
Было написано, что при назначении параметра конструктора свойству по ссылке внутри, тот же символ (который, я думаю, является терминологией в C), используемый для параметра, будет использоваться для свойства вместо создания нового только для присвоения. :
<?php
class MyClass {
protected $myProperty;
public function __construct( $property ) {
// Here!
$this -> myProperty =& $property;
}
public function getPropertyValue() {
return $this -> myProperty;
}
}
Вид имеет смысл, в конце концов, главная характеристика ссылок — это воздействие на переменную внешней области видимости в локальной. Но я никогда не беспокоился о тестировании или профилировании, и я немного начал делать это на маленьких кодах почти по инерции, и дело пошло спать с ленивыми нейронами.
Но потом, недавно, эта тема возникла у меня в мозгу, и я запустил этот фрагмент кода в 3ev4l, сравнивая по ссылке и обычный способ проверить и, по-видимому, это действительно происходит.
Это действительно небольшая разница — и я бегал 100 тысяч раз — но это любопытство, которое я так и не получил.
Может ли кто-нибудь предоставить больше информации, может быть, подробно об этом? В частности, но не ограничиваясь, потенциальные проблемы, которые это может принести?
Задача ещё не решена.
Других решений пока нет …