PHP: Используя пробелы в индексах ассоциативного массива

Это, плохо практикуют/могут проблемы причины?

$_SESSION['stuff to keep']

В противоположность вызову str_replace() на индексах.

17
задан Nick Heiner 4 January 2010 в 23:22
поделиться

4 ответа

Это плохая практика, но не из-за космоса.

// 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" (с пробелами). Конечно, извлечение() и кастинг к объекту больше не будет работать, но вы не должны делать это в любом случае с вашим сеансом.

Разрешение пользователю вводить текст в ключи сеанса, конечно, является вопиющей ошибкой в безопасности.

.
18
ответ дан 30 November 2019 в 12:43
поделиться

Вы можете это сделать, это сработает -- и даже если я обычно не делаю этого, когда я устанавливаю ключи моих массивов "вручную", это иногда случается, когда я получаю ключи из файла (например), и у меня никогда не возникало никаких проблем с этим.

Может быть, это может вызвать какую-нибудь проблему, если вы используете функции извлечения . Если она создает переменные с пробелами в их именах (не знаю), то будет сложно (но не невозможно) получить доступ к вашим переменным.

.
8
ответ дан 30 November 2019 в 12:43
поделиться

Это не вызовет проблем, но ключи массивов обычно рассматриваются как имена переменных, поэтому их следует выбирать с теми же самыми соображениями

.
3
ответ дан 30 November 2019 в 12:43
поделиться

Похоже на добавление лишних пробелов... Обычно я не использую пробелы. Но если используете, то обязательно процитируйте ключи массивов.

0
ответ дан 30 November 2019 в 12:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: