Синтаксис PHP $ {"{$ type} _method"} - PullRequest
2 голосов
/ 31 июля 2009

Я читал книгу по PHP5, и автор обычно использовал этот синтаксис

${"{$something}_somethingelse"};

Понятия не имею, что это значит. Динамически генерирует имя переменной?

Кто-нибудь мне поможет?

Ответы [ 4 ]

9 голосов
/ 31 июля 2009

Это языковая функция, которая называется Переменные переменные .

Рассмотрим следующий фрагмент кода:

$a = 'hello';

Это довольно просто. Он создает переменную $a и устанавливает ее значение 'hello'.

Давайте продолжим с:

$$a = 'world';
${$a} = 'world';

По сути, поскольку $a = 'hello', эти два утверждения эквивалентны действию:

$hello = 'world';

Итак, следующее:

echo "$a ${$a}";

Это эквивалент действия:

echo "$a $hello";

Брекеты { }

Скобки используются для предотвращения возникновения неоднозначности. Учтите следующее:

$$a[1] = 'hello world';

Вы хотите назначить переменную с именем по значению $a[1] или же вы хотите присвоить индекс 1 переменной с именем $a?

Для первого выбора вы должны написать это так:

${$a[1]} = 'hello world';

Для второго выбора:

${$a}[1] = 'hello world';

Ваш пример

Теперь для вашего примера.

Давайте рассмотрим, что:

$something = 'hello';

Используя ваш пример как таковой:

${"{$something}_somethingelse"} = 'php rocks';

По сути, это будет эквивалентно выполнению:

$hello_somethingelse = 'php rocks';
2 голосов
/ 31 июля 2009

Это переменные переменные. Смотрите это .

1 голос
/ 31 июля 2009

Скобки позволяют вам создавать более сложные имена переменных. В вашем случае, если $ что-то было равно тесту, это было бы:

${"test_somethingelse"};

Это просто расширенное имя переменной.

Вот пример.

$test = "test";
${"test_test"} = "test2";

echo $test; // prints test
echo ${"test_test"}; // prints test2

Используя переменные Varaibles, как и все остальные, вы можете создавать переменные на основе других переменных. Так что в вашем случае он делал переменную, основанную на значении $ что-то

$something = "test";

${"{$something}_somethingelse"};

turns into

${"test_somethingelse"};

1 голос
/ 31 июля 2009

Это заменит {$something} значением $ что-то.

Я думаю, что внутренние фигурные скобки предназначены только для удобства чтения и помогают при выполнении $object->property и т. Д.

Поскольку оно, по-видимому, также содержится в переменной, это называется переменной-переменной.

Например,

$foo = 'bar';

$$foo = 7;

echo $bar;

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