Что означает синтаксис PHP $ var1 -> $ var2? - PullRequest
7 голосов
/ 23 февраля 2010

Чем объясняется следующий синтаксис?

$var1->$var2 // Note the second $

Ответы [ 3 ]

17 голосов
/ 23 февраля 2010

Вы вызываете свойство на $var1, имя которого совпадает со значением $var2.

Например:

$var2 = "name";

// The following are equivalent
$var1->name;
$var1->$var2;
9 голосов
/ 23 февраля 2010

$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
2 голосов
/ 23 февраля 2010

Это означает, что динамически запрашивать свойство в объекте.

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 содержит имя свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...