Передаются ли переменные PHP по значению или по ссылке?

В PHP по умолчанию объекты php передаются как ссылка на passing-by-reference новый объект.

См. этот пример:

class X {
  var $abc = 10; 
}

class Y {

  var $abc = 20; 
  function changeValue($obj)
  {
   $obj->abc = 30;
  }
}

$x = new X();
$y = new Y();

echo $x->abc; //outputs 10
$y->changeValue($x);
echo $x->abc; //outputs 30

А pass-by-reference теперь посмотрите на это:

class X {
  var $abc = 10; 
}

class Y {

  var $abc = 20; 
  function changeValue($obj)
  {
    $obj = new Y();
  }
}

$x = new X();
$y = new Y();

echo $x->abc; //outputs 10
$y->changeValue($x);
echo $x->abc; //outputs 10 not 20 same as java does.

А pass-by-value теперь посмотрите на это:

class X {
  var $abc = 10; 
}

class Y {

  var $abc = 20; 
  function changeValue(&$obj)
  {
    $obj = new Y();
  }
}

$x = new X();
$y = new Y();

echo $x->abc; //outputs 10
$y->changeValue($x);
echo $x->abc; //outputs 20 not possible in java.

Надеюсь, вы pass-by-value понимаете это.

php

variables

pass-by-reference

pass-by-value

2022-11-13T20:00:11+00:00
Вопросы с похожей тематикой, как у вопроса:

Передаются ли переменные PHP по значению или по ссылке?