Ответ 1
Объекты используют другой ссылочный механизм. &$object
является скорее ссылкой ссылки. Вы не можете сравнить их обоих.
См. Объекты и ссылки:
Ссылка PHP - это псевдоним, который позволяет двум различным переменным писать одно и то же значение. Начиная с PHP 5, объектная переменная больше не содержит объект как значение. Он содержит только идентификатор объекта, который позволяет объектным аксессуарам находить фактический объект. Когда объект отправляется аргументом, возвращенным или назначенным другой переменной, разные переменные не являются псевдонимами: они содержат копию идентификатора, которая указывает на тот же объект.
&$object
- это нечто иное, чем $object
. Я приведу вам пример:
foreach ($objects as $object) {
if ($cond) {
$object = new Object(); // This won't affect $objects
}
}
foreach ($objects as &$object) {
if ($cond) {
$object = new Object(); // This will affect $objects
}
}
Я не буду отвечать на вопрос, если это имеет смысл, или если есть необходимость. Это вопросы, основанные на мнениях. Вы можете определенно жить без ссылки &
на объекты, как вы могли бы без объектов вообще. Существование двух механизмов является следствием обратной совместимости PHP.