Почему происходит при присвоении значения к свойству объекта в это? Изучал php и наткнулся на один пример.
Почему если присвоить объекту свойство-массив , то он внутри переменной $test.
Если обычное свойство, то он вне переменной $test.test[$name];
}

public function out() {
return $this;
}
}
$foo = new Foo();
$foo->arr[1] = 'one';
$foo->arr[2] = 'two';
$foo->str = 'three';
echo '';
print_r($foo->out());
print_r($foo->arr);Вот результат:Вывод print_rFoo Object
(
[test] => Array
(
[arr] => Array
(
[1] => one
[2] => two
)
)
[str] => three
)
Array
(
[1] => one
[2] => two
)Вывод Var_Dumpobject(Foo)#1 (2) {
["test"]=>
array(1) {
["arr"]=>
array(2) {
[1]=>
string(3) "one"
[2]=>
string(3) "two"
}
}
["str"]=>
string(5) "three"
}
array(2) {
[1]=>
string(3) "one"
[2]=>
string(3) "two"
}
И еще вопрос по поводу ссылки & __get() , я знаю как работает ссылка в переменных, но в функциях не понятно

21 Авг 2019 в 06:59
226 +1
1
Ответы
1

При присвоении значения к свойству объекта в это происходит, потому что в методе __get объекта Foo вы возвращаете не само значение свойства, а ссылку на него. Таким образом, при добавлении значения к свойству-массиву arr, вы на самом деле добавляете его к элементу массива, который находится внутри свойства test.

Что касается ссылки в функциях, в данном случае она используется для того, чтобы вернуть не копию значения свойства, а само значение по ссылке. Это позволяет вам изменять свойство напрямую через ссылку, а не через его копию.

20 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир