Должен ли я использовать фигурные скобки или объединить переменные внутри строк?

Прямой вопрос: есть ли преимущество или недостаток для объединения переменных в строках или использования фигурных скобок?

Каскадный:

$greeting = "Welcome, ".$name."!";

Фигурные скобки:

$greeting = "Welcome, {$name}!";

Лично я всегда объединял свои строки, потому что я использую UEStudio, и он выделяет переменные PHP другим цветом при объединении. Однако, когда переменная не взломана, это не так. Мне просто легче находить переменные PHP в длинных строках и т. Д.

РЕДАКТИРОВАТЬ: Люди путают это из-за SQL. Это не то, о чем этот вопрос. Я обновил свои примеры, чтобы избежать путаницы.

3 ответа

Решение

Все следующее делает то же самое, если вы посмотрите на вывод.

  1. $greeting = "Welcome, " . $name . "!";
  2. $greeting = 'Welcome, ' . $name . '!';
  3. $greeting = "Welcome, $name!";
  4. $greeting = "Welcome, {$name}!";

Вы не должны использовать вариант 1, используйте вариант 2 вместо этого. Оба варианта 3 и 4 одинаковы. Для простой переменной фигурные скобки являются необязательными. Но если вы используете элементы массива, вы должны использовать фигурные скобки; например: $greeting = "Welcome, {$user['name']}!";, Поэтому в качестве стандарта фигурные скобки используются, если используется переменная интерполяция вместо конкатенации.

Но если такие символы, как вкладка (\t), новая линия (\n), они должны быть в двойных кавычках.

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

С предварительно скомпилированным PHP (Bytecode Cache) это не имеет значения.

Эта функция поставляется с PHP 5.5 (Zend Optimizer+).

Хотя это не относится к атакам с использованием инъекций (включая SQLi), следует, по крайней мере, отметить - особенно для разработчиков PHP - что использование любого из перечисленных методов без предварительного кодирования и проверки всех входных данных приведет к атаке на основе инъекций.

Важно помнить о безопасности в начале кодирования, а не в конце, когда весь код должен быть переделан для соответствия требованиям безопасности. Или, когда вы, наконец, добьетесь этой чертовой войны против войны и поймете, что это не имеет значения, потому что вы подвержены XSS, использующему любую технику без надлежащего кодирования и проверки всех входных данных.

  1. Кодируйте, используя urlencode() или htmlenities(), чтобы нормализовать ввод (ы).
  2. Используйте типизацию данных для нестроковых ИЛИ поиск по словарю и / или регулярные выражения для проверки строк.
  3. Прибыль?
Другие вопросы по тегам