Прямой вопрос: есть ли преимущество или недостаток для конкатенации переменных внутри строк или использования фигурных скобок?
Каскадный:
$greeting = "Welcome, ".$name."!";
Фигурные скобки:
$greeting = "Welcome, {$name}!";
Лично я всегда конкатенировал свои строки, потому что я использую UEStudio, и он выделяет переменные PHP другим цветом при конкатенировании. Однако, когда переменная не разбивается, это не так. Это просто облегчает для моих глаз поиск переменных PHP в длинных строках и т. Д.
EDIT: Люди путают это о существовании SQL. Это не тот вопрос, о котором идет речь. Я обновил свои примеры, чтобы избежать путаницы.
Все перечисленные ниже аналогичны, если вы посмотрите на результат.
$greeting = "Welcome, " . $name . "!";
$greeting = 'Welcome, ' . $name . '!';
$greeting = "Welcome, $name!";
$greeting = "Welcome, {$name}!";
Вы не должны использовать вариант 1, вместо этого используйте вариант 2. Оба варианта 3 и 4 одинаковы. Для простой переменной фигурные скобки необязательны. Но если вы используете элементы массива, вы должны использовать фигурные скобки; например: $greeting = "Welcome, {$user['name']}!";
, Поэтому в качестве стандарта используются фигурные скобки, если используется переменная интерполяция, а не конкатенация.
Но если используются символы, такие как tab ( \t
), new-line ( \n
), они должны быть в двойных кавычках.
Обычно переменная интерполяция медленная, но конкатенация также может быть медленнее, если у вас слишком много переменных для конкатенации. Поэтому решайте в зависимости от того, сколько переменных среди других символов.
Хотя это и не касается инъекций (включая SQLi), следует, по крайней мере, отметить, особенно для разработчиков PHP, – что использование любого из вышеперечисленных методов без предварительной кодировки и проверки всех входных данных приведет к атаке на основе инъекций.
Важно запомнить безопасность в начале кодирования – не конец, когда весь код необходимо переделать для соответствия требованиям безопасности. Или, когда вы, наконец, получите эту данг «против», и понимаете, что это не имеет значения, потому что вы восприимчивы к XSS, используя любую технику без надлежащего кодирования и проверки всех входных данных.
С pre-comiled PHP (Bytecode Cache) это не имеет никакого значения.
Эта функция поставляется с PHP 5.5 (Zend Optimizer +).
Используйте одинарные кавычки и конкатенацию.
Пример:
$var = 'string' . $var2 . 'string2';
Скользящие скобки медленнее.