Передача объекта по ссылке в РНР5

akxxiv

Новичок
Передача объекта по ссылке в РНР5

Господа, что-то я запутался совсем. В каких случаях объект передается по ссылке?.
Приведу несколько примеров,
1-й пример
PHP:
function f($obj)
{
     // Здесь $obj - ссылка так?
}
$obj = new Object;
f($obj)ж
2-й пример
PHP:
function f()
{
      $obj = new Object;
      return $obj;
}

$obj = f(); // Здесь у нас ссылка??
3-й пример
PHP:
function f1($obj)
{
      $obj->set(...);
      f2($obj);
     return $obj;
}
function f2($obj)
{
      $obj->set(...);
      f2($obj);
}

$obj = f1(new Object);

// Здесь все монипуляции с одним объектом? Все по ссылке идет, или надо & ставить. Если надо то в каком случае?
 

crocodile2u

http://vbolshov.org.ru
akxxiv
Эксперимент поставить, действительно очень просто. Ну а так, сходу: в пхп5 объекты передаются по ссылке ВСЕГДА - за исключением случаев, когад специально используется clone.
 

tony2001

TeaM PHPClub
просто думайте об объектах в PHP5 в контексте ресурсов.
вы же не присваиваете ресурсы по ссылке, вот и объекты не надо.
в PHP4 просто были не объекты, а массивы.
 

agx

Программер :-)
Другими словами, забудь про амперсанд и никогда его не используй. :) Указатели, конечно, вещь нужная, когда имеешь дело с такими языками, как C, но если ты придерживаешься объектно-ориентированного подхода в программировании и используешь PHP5, то объекты автоматически передаются по ссылке, а значения базовых типов передавать по ссылке ИМХО вообще не стоит - это только путает того, кто будет читать твой код, в том числе и тебя самого.
 

agx

Программер :-)
Krishna
Да нет, он имел в виду, что кодга передаешь ресурс, то перед именем переменной не ставишь "&".
 
Сверху