Почему происходит при присвоении значения к свойству объекта в это? Изучал 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() , я знаю как работает ссылка в переменных, но в функциях не понятно
При присвоении значения к свойству объекта в это происходит, потому что в методе __get объекта Foo вы возвращаете не само значение свойства, а ссылку на него. Таким образом, при добавлении значения к свойству-массиву arr, вы на самом деле добавляете его к элементу массива, который находится внутри свойства test.
Что касается ссылки в функциях, в данном случае она используется для того, чтобы вернуть не копию значения свойства, а само значение по ссылке. Это позволяет вам изменять свойство напрямую через ссылку, а не через его копию.
При присвоении значения к свойству объекта в это происходит, потому что в методе __get объекта Foo вы возвращаете не само значение свойства, а ссылку на него. Таким образом, при добавлении значения к свойству-массиву arr, вы на самом деле добавляете его к элементу массива, который находится внутри свойства test.
Что касается ссылки в функциях, в данном случае она используется для того, чтобы вернуть не копию значения свойства, а само значение по ссылке. Это позволяет вам изменять свойство напрямую через ссылку, а не через его копию.