PHP: использование пробелов в индексах ассоциативного массива
Является ли эта плохая практика/может вызвать проблемы?
$_SESSION['stuff to keep']
В отличие от вызова str_replace()
по индексам.
Ответы
Ответ 1
Это плохая практика, но не из-за пространства.
// file foo.php
$_SESSION['stuff to keep'] = 42;
// file bar.php
if ($_SESSION['stufft o keep'] == 42) frobnicate();
Здесь ваш код бесшумно ошибочно, и ошибка может занять некоторое время. Хорошей практикой является использование PHP-принудительного имени, такого как константа класса:
$_SESSION[Stuff::TO_KEEP] = 42;
if($_SESSION[Stuff::TOO_KEEP] == 42)
// error: no constant TOO_KEEP in class Stuff
Затем вы можете определить эту константу для любой константы, которую вы найдете интересной или читаемой, например "stuff to keep"
(с пробелами). Конечно, extract()
и отбрасывание на object
больше не будет работать, но вы не должны делать это в любом случае со своей сессией.
Разрешение вводимого пользователем текста на ключи сеанса - это, конечно, явная ошибка безопасности.
Ответ 2
Вы можете это сделать, это сработает - и даже если я вообще этого не делаю, когда я устанавливаю ключи своих массивов "вручную", иногда это происходит, когда я получаю ключи из файла (для экземпляр), и у меня никогда не было проблем с этим.
Возможно, это может вызвать какую-то проблему, если вы используете функции extract
. Если он создает переменные с пробелами в своих именах (не знаю, будет ли это), будет трудно (но не невозможно) получить доступ к вашим переменным.
Ответ 3
Это не вызовет проблемы, но ключи массива обычно считаются именами переменных, поэтому их следует выбирать с одинаковыми соображениями
Ответ 4
Похоже на добавление лишних пробелов на мой взгляд... Обычно я не использую пробелы. Если вы это сделаете, убедитесь, что вы указываете ключи массива.