Что делает ссылка на метод? - PullRequest
1 голос
/ 12 марта 2020

Что означает этот ссылочный символ (&) в методе &methodName()?

Это необходимо?

Это называется reference by method?

class TestClass
{
    private $value;
    public function __construct()
    {
        $this->value = 5;
    }
    public function &methodName(){
        return $this->value;
    }
}
echo (new TestClass())->methodName();  //Outputs 5;

1 Ответ

3 голосов
/ 12 марта 2020

Это означает, что метод возвращает ссылку. Если вы затем назначите это ссылочной переменной вне метода, обновление переменной приведет к обновлению свойства.

class TestClass
{
    private $value;
    public function __construct()
    {
        $this->value = 5;
    }
    public function &refMethod(){
        return $this->value;
    }
    public function valueMethod() {
        return $this->value;
    }
    public function printValue() {
        echo $this->value . "<br>";
    }
}
$c = new TestClass();
$var1 = &$c->valueMethod();
$var1 = 10;
$c->printValue(); // prints 5
$var = &$c->refMethod();
$var = 20;
$c->printValue(); // prints 20
...