Должен ли я использовать фигурные скобки или объединить переменные внутри строк?
Прямой вопрос: есть ли преимущество или недостаток для объединения переменных в строках или использования фигурных скобок?
Каскадный:
$greeting = "Welcome, ".$name."!";
Фигурные скобки:
$greeting = "Welcome, {$name}!";
Лично я всегда объединял свои строки, потому что я использую UEStudio, и он выделяет переменные PHP другим цветом при объединении. Однако, когда переменная не взломана, это не так. Мне просто легче находить переменные PHP в длинных строках и т. Д.
РЕДАКТИРОВАТЬ: Люди путают это из-за SQL. Это не то, о чем этот вопрос. Я обновил свои примеры, чтобы избежать путаницы.
3 ответа
Все следующее делает то же самое, если вы посмотрите на вывод.
$greeting = "Welcome, " . $name . "!";
$greeting = 'Welcome, ' . $name . '!';
$greeting = "Welcome, $name!";
$greeting = "Welcome, {$name}!";
Вы не должны использовать вариант 1, используйте вариант 2 вместо этого. Оба варианта 3 и 4 одинаковы. Для простой переменной фигурные скобки являются необязательными. Но если вы используете элементы массива, вы должны использовать фигурные скобки; например: $greeting = "Welcome, {$user['name']}!";
, Поэтому в качестве стандарта фигурные скобки используются, если используется переменная интерполяция вместо конкатенации.
Но если такие символы, как вкладка (\t
), новая линия (\n
), они должны быть в двойных кавычках.
Обычно интерполяция переменных происходит медленно, но конкатенация также может быть медленнее, если у вас слишком много переменных для конкатенации. Поэтому решайте в зависимости от того, сколько переменных среди других символов.
С предварительно скомпилированным PHP (Bytecode Cache) это не имеет значения.
Эта функция поставляется с PHP 5.5 (Zend Optimizer+).
Хотя это не относится к атакам с использованием инъекций (включая SQLi), следует, по крайней мере, отметить - особенно для разработчиков PHP - что использование любого из перечисленных методов без предварительного кодирования и проверки всех входных данных приведет к атаке на основе инъекций.
Важно помнить о безопасности в начале кодирования, а не в конце, когда весь код должен быть переделан для соответствия требованиям безопасности. Или, когда вы, наконец, добьетесь этой чертовой войны против войны и поймете, что это не имеет значения, потому что вы подвержены XSS, использующему любую технику без надлежащего кодирования и проверки всех входных данных.
- Кодируйте, используя urlencode() или htmlenities(), чтобы нормализовать ввод (ы).
- Используйте типизацию данных для нестроковых ИЛИ поиск по словарю и / или регулярные выражения для проверки строк.
- Прибыль?