Переменная переменная - это мощная, но потенциально опасная возможность PHP, позволяющая динамически определять имя переменной во время выполнения программы.
Синтаксис использует два знака доллара $$
:
$foo = 'bar';
$$foo = 'baz'; // Создаёт переменную $bar со значением 'baz'
echo $bar; // Выведет: baz
Здесь:
$foo
содержит строку 'bar'
$$foo
интерпретируется как $bar
bar
$types = ['user', 'product', 'category'];
foreach ($types as $type) {
${$type.'_id'} = getLastId($type); // Создаст $user_id, $product_id и т.д.
}
$varName = 'user_data';
$$varName = ['name' => 'John', 'age' => 30];
print_r($user_data); // Выведет массив
$a = 'hello';
$$a = 'world';
$$$a = 'PHP';
echo $hello; // world
echo $world; // PHP
Безопасность: Риск инъекций, если имя переменной приходит от пользователя
$var = $_GET['var_name']; // Опасность!
$$var = 'value';
Читаемость: Код становится сложнее для понимания
Отладка: Трудно отслеживать динамически созданные переменные
Ассоциативные массивы:
$vars = [];
$vars[$dynamicName] = $value;
Классы и свойства:
$obj = new stdClass();
$obj->{$dynamicProperty} = $value;
переменные переменных - мощный инструмент, но требуют осторожного использования. В большинстве случаев лучше использовать ассоциативные массивы или объектные свойства для улучшения читаемости и безопасности кода.