Что означает знак "&" в PHP?

Я пытался найти этот ответ в Google, но я думаю, что символ & работает как некоторый оператор или просто не является поисковым термином по любой причине.. во всяком случае. Я видел этот фрагмент кода, изучая, как создавать плагины WordPress, поэтому мне просто нужно знать, что означает &, когда он предшествует переменной, содержащей объект класса.

//Actions and Filters
if (isset($dl_pluginSeries)) {

    //Actions
    add_action('wp_head', array(&$dl_pluginSeries, 'addHeaderCode'), 1);
    //Filters
    add_filter('the_content', array(&$dl_pluginSeries, 'addContent'));
}

Ответ 1

Это заставит переменную передавать по ссылке. Обычно для простых типов создается печатная копия. Это может пригодиться для больших строк (прирост производительности) или если вы хотите манипулировать переменной без использования оператора return, например:

$a = 1;

function inc(&$input)
{
   $input++;
}

inc($a);

echo $a; // 2

Объекты будут автоматически передаваться по ссылке.

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

clone $object;

Затем исходный объект не изменяется, например:

$a = new Obj;
$a->prop = 1;
$b = clone $a;
$b->prop = 2; // $a->prop remains at 1

Ответ 4

Я использовал его для отправки переменной функции, а функция меняла переменную вокруг. После выполнения функции мне не нужно возвращать функцию к возвращаемому значению и устанавливать новое значение для моей переменной.

Пример

function fixString(&$str) {
    $str = "World";
}

$str = "Hello";
fixString($str);
echo $str; //Outputs World;

Код без &

function fixString($str) {
    $str = "World";
    return $str;
}

$str = "Hello";
$str = fixString($str);
echo $str; //Outputs World;