Что означает синтаксис PHP $var1 → $var2? В чем объясняется следующий синтаксис? $var1->$var2 // Note the second $ Ответ 1 Вы вызываете свойство на $var1, которое называется таким же, как значение $var2. Например: $var2 = "name"; // The following are equivalent $var1->name; $var1->$var2; Ответ 2 $var1 - это объект. $var2 является (возможно) именем переменной внутри $var1. Если $var2="test"; оценивается так: $var1->test; Вы можете сделать это со всеми вещами: $test = array(); $name="test"; print_r($$name); // Prints array(); $test = new stdClass; $test->hello = "hi"; $name2="hello"; echo $test->$name2; // Echos hi Вы даже можете получить фантазию: echo $$name->$name2; // Echos hi Ответ 3 Это означает, что динамически запрашивать свойство в объекте. class A { public $a; } // static property access $ob = new A; $ob->a = 123; print_r($ob); // dynamic property access $prop = 'a'; $ob->$prop = 345; // effectively $ob->a = 345; print_r($ob); поэтому $var1 является экземпляром какого-либо объекта, -> означает доступ к члену этого объекта, а $var2 содержит имя свойства.
Ответ 1 Вы вызываете свойство на $var1, которое называется таким же, как значение $var2. Например: $var2 = "name"; // The following are equivalent $var1->name; $var1->$var2;
Ответ 2 $var1 - это объект. $var2 является (возможно) именем переменной внутри $var1. Если $var2="test"; оценивается так: $var1->test; Вы можете сделать это со всеми вещами: $test = array(); $name="test"; print_r($$name); // Prints array(); $test = new stdClass; $test->hello = "hi"; $name2="hello"; echo $test->$name2; // Echos hi Вы даже можете получить фантазию: echo $$name->$name2; // Echos hi
Ответ 3 Это означает, что динамически запрашивать свойство в объекте. class A { public $a; } // static property access $ob = new A; $ob->a = 123; print_r($ob); // dynamic property access $prop = 'a'; $ob->$prop = 345; // effectively $ob->a = 345; print_r($ob); поэтому $var1 является экземпляром какого-либо объекта, -> означает доступ к члену этого объекта, а $var2 содержит имя свойства.