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

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

Каскадный:

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

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

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

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

EDIT: Люди путают это о существовании SQL. Это не тот вопрос, о котором идет речь. Я обновил свои примеры, чтобы избежать путаницы.

Все перечисленные ниже аналогичны, если вы посмотрите на результат.

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

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

Но если используются символы, такие как tab ( \t ), new-line ( \n ), они должны быть в двойных кавычках.

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

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

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

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

С pre-comiled PHP (Bytecode Cache) это не имеет никакого значения.

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

Используйте одинарные кавычки и конкатенацию.

Пример:

 $var = 'string' . $var2 . 'string2'; 

Скользящие скобки медленнее.