Использование & для получения ссылки на объект в PHP является избыточным? - PullRequest
1 голос
/ 15 декабря 2010

В PHP все объектные переменные на самом деле являются указателями на объекты (нет?), Язык обрабатывает это неявно (верно?), Но я вижу много PHP-кода, указывающего ссылки в таких параметрах, как этот:

function someMethod(SomeClass& $obj)
{
//...
}

Я также видел такие вещи:

function add()
{
 $object = new SomeClass;
 self::$objects[] =& $object;
}

Поправь меня, если я ошибаюсь, но здесь не будет никакой разницы:

self::$objects[] =& new SomeClass
self::$objects[] = new SomeClass

Я прав ??????

Еще одна вещь, которую я тестировал:

class SomeClass{}
$obj =& new SomeClass; // is in fact deprecated, doesn't work

$obj = new SomeClass;
$obj2 =& $obj; // works, but should also be deprecated!! No?

Ответы [ 3 ]

2 голосов
/ 15 декабря 2010

В php5, да, это избыточно и бессмысленно.

1 голос
/ 15 декабря 2010

Насколько мне известно, единственное, что относится к ссылкам, которые устарели, это передача по ссылке во время вызова (например, somefunction(&$var);

Ваши примеры кода, вероятно, имеют символ & для совместимости с PHP 4. Не имеет большого значения, используете ли вы & или не работаете со ссылками на объекты в PHP 5. Конечно, есть небольшая разница (между передачей ссылок по значению в PHP 5 и использованием & для передачи объектов по ссылке), но в большинстве случаев это не должно влиять на ваш код при запуске в PHP 5.

0 голосов
/ 15 декабря 2010

Эта страница может быть вам полезна: http://www.php.net/manual/en/language.operators.assignment.php

new автоматически возвращает ссылку, поэтому вы больше не используете = & с вновь объявленным объектом.

...