Возврат ссылок с или без функции

Есть ли реальная разница между двумя способами получения значения по ссылке?

Способ 1

<?php
class foo {
public $value = 42;

public function &getValue() {
return $this->value;
}
}

$obj = new foo;
$myValue = &$obj->getValue();
// $myValue is a reference to $obj->value, which is 42.
$obj->value = 2;
echo $myValue;
// prints the new value of $obj->value, i.e. 2.
?>

Способ 2

<?php
class foo {
public $value = 42;
public function getValue() {
return $this->value;
}
}

$obj = new foo;
$myValue = &$obj->value;
$obj->value = 2;
echo $myValue;
?>

В обоих случаях 2 печатается. Так зачем нужен GetValue () функция тогда? Первый пример взят из Руководство по PHP.

0

Решение

Вам нужен первый подход, если у полей класса нет модификатора public. В этом случае вы не можете получить ссылку на поле за пределами класса. Смотрите пример:

<?php

class foo
{
protected $value = 1;

public function setValue($value)
{
$this->value = $value;
}

public function &getValue()
{
return $this->value;
}
}

$obj = new foo;
$myValue = &$obj->getValue();
$obj->setValue(2);
echo $myValue;
?>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]