Это некоторый код PHP для рендеринга элемента привязки HTML. Почему это:
$archives .= " <a href='" . get_year_link($archPost->year) . "'
title='Click to go to full listing for " . $archPost->year . "' target='_blank'>[List^]</a>";
работать точно так:
$archives .= " <a href='" . get_year_link($archPost->year) . "'
title='Click to go to full listing for $archPost->year' target='_blank'>[List^]</a>";
Исходя из C / C # и тому подобного, я предпочитаю первый вариант, потому что я думаю, что нельзя просто сбросить переменные smack-dab в середине строки. Очевидно, у PHP нет проблем с этим. Почему бы и нет?
Это называется интерполяцией строк, и это также доступно в C #.
Лично я считаю использование интерполяции строк плохой практикой. Это затрудняет чтение кода в вашей среде IDE и может привести к неправильной интерпретации строк. (Возможно, вы хотели, чтобы этот знак доллара означал знак доллара, но потому что вы использовали двойные кавычки "
вместо одинарных кавычек '
Теперь у вас есть ошибка.) Вместо этого я объединяю:
$var = 'something' . $somethingElse;
Если вы используете echo
более целесообразно выводить список, а не объединять:
echo 'something', $somethingElse;
Другая проблема, по крайней мере та, которая используется в вашем примере, заключается в том, что вы выгружаете данные напрямую в контекст HTML без экранирования. Если ваш вывод содержит зарезервированные объекты, вы будете генерировать недопустимый неоднозначный HTML Это может даже привести к проблемам безопасности в зависимости от используемого контекста, таким как проблемы XSS. Вы хотите использовать htmlspecialchars()
вокруг любых произвольных данных, используемых в HTML. (Или используйте шаблонизатор, который сделает это за вас.)
Других решений пока нет …