В этой серии статей мы рассмотрим стандарты кодирования WordPress PHP, чтобы лучше понять, как должен быть написан качественный код WordPress.
Конечно, все это задокументировано в стандартах кодирования WordPress, и это сайт, который каждый разработчик WordPress должен иметь в закладках и под рукой при работе над темой, плагином или приложением; Однако, если вы только начинаете разработку WordPress, важно понять, почему соглашения таковы, какими они являются.
В этой статье мы рассмотрим использование одинарных и двойных кавычек, особенно при работе со строками.
Это может быть самая короткая, самая простая статья в серии, но она должна охватывать некоторые важные нюансы, связанные с работой с одинарными, двойными и строками в WordPress.
Строки в PHP и Строки в WordPress
Прежде чем мы на самом деле обсудим строки, как они относятся к WordPress, важно понять, как язык PHP интерпретирует строки, когда они заключаются в одинарные или двойные кавычки.
Одиночные кавычки в PHP
Во-первых, самый простой и простой способ определить строку в PHP — это просто заключить ее в одинарные кавычки (то есть символ ‘).
Как и в большинстве языков программирования, существуют способы экранирования символов, чтобы вы могли записать строковый литерал. Например, если вы хотите написать: «Строки в PHP просты» как строку, то вы можете сделать это:
'String\'s in PHP are easy.'
Видеть? Обратная косая черта будет инструктировать PHP писать одиночную кавычку, а не завершать фактическую строку.
Второе, на что следует обратить внимание, это то, что если у вас есть переменная, она не будет заменена в кавычках. Например, предположим, что у вас есть переменная с именем $name
и она содержит значение «Envato».
В частности, в коде это будет выглядеть так:
$name = 'Envato'
Если бы вы вставили переменную $name
в другую строку, Envato не был бы заменен.
1
2
|
$name = ‘Envato’;
echo ‘I\’m writing for $name.
|
Это было бы просто эхом: я пишу для $ name. Это очень весело.
Вот где двойные кавычки начинают пригодиться.
Двойные кавычки в PHP
Прямо из руководства по PHP:
Если строка заключена в двойные кавычки («), PHP будет интерпретировать больше escape-последовательностей для специальных символов.
Вы можете прочитать больше о escape-символах и другую информацию в руководстве по PHP , но допустим, что мы должны были переделать некоторые из строк, которые мы определили выше.
Наш первый пример, который содержит экранированную одинарную кавычку, теперь может быть определен так:
"String's in PHP are easy."
В нашем втором примере можно сделать еще один шаг: не только больше не требуется escape-последовательность, но также будет оценена переменная:
1
2
|
$name = ‘Envato’;
echo «I’m writing for $name. It’s a lot of fun.»;
|
Вторая строка будет буквально повторяться: я пишу для Envato. Это очень весело.
Итак, рассмотрев это как введение, давайте поговорим о специфике строк в WordPress. Правда в том, что если вы хорошо разбираетесь во всем вышеперечисленном, добавить нечего, кроме нескольких разовых случаев.
Одиночные кавычки в WordPress
В соответствии с соглашениями о кодировании PHP, общее правило, которое следует соблюдать, это всегда использовать одинарные кавычки для определения ваших строк.
Поскольку большая часть работы, выполняемой в WordPress, также включает в себя написание разметки внутри строки PHP, лучше всего помещать эти строки в одинарные кавычки, чтобы атрибуты элемента HTML можно было заключить в двойные кавычки.
Например:
$html = '<a href="http://wordpress.org" target="_blank">WordPress</a>';
Очевидно, что вышеупомянутое делает процесс чтения более понятным, чем использование нескольких escape-символов для обработки двойных кавычек, косой черты и так далее.
Если вы имеете дело с разметкой, которая должна занимать несколько строк, или если вы создаете несколько элементов, некоторые из которых являются дочерними элементами других, я всегда рекомендую делать отступ кода, чтобы он читался так, как это делается в HTML-документе.
Например:
1
2
3
4
5
|
$name = ‘Tom McFarlin’;
$html = ‘<div id=»container»>’;
$html .= ‘<span>’ .
$html .= </div><!— /#container —>’;
|
Важно отметить, что это не является частью стандартов кодирования WordPress — это соглашение, которое я просто нахожу полезным, когда речь идет о поддержке кода — однако, напомним, что строки в одинарных кавычках не оценивают значение переменной.
Поэтому важно отметить, что в этом случае мы используем конкатенацию строк для включения определения переменной.
Двойные кавычки в WordPress
Как и в случае с двойными кавычками в PHP, важно отметить, что бывают случаи, когда их предпочтительнее использовать, особенно когда вам нужно оценить переменную.
Используя пример из кода выше, мы изменили бы его следующим образом:
1
2
3
4
5
|
$name = ‘Tom McFarlin’;
$html = «<div id=’container’>»;
$html .= «<span>$name
$html .= «</div><!— /#container —>»;
|
Обратите внимание, что мы заменили все одинарные кавычки на двойные и что нам больше не нужно выполнять какую-либо конкатенацию строк с переменной $name
поскольку она будет оценена.
Также важно отметить, что, хотя, возможно, более распространено видеть, что двойные кавычки применяются к атрибутам HTML, одинарные кавычки также работают хорошо, особенно в подобных сценариях.
Но есть исключения
При работе со строками и различными языками программирования, а именно с HTML, это может немного усложнить то, как вы вкладываете свой код.
Например, предположим, что вы используете PHP для записи JavaScript, который отвечает за рендеринг некоторого HTML. В этом сценарии вы будете писать много цитат.
Хотя можно просто чередовать стили цитирования, это не сработает в 100% случаев.
Даже Стандарты Кодирования заявляют:
Исключением является JavaScript, который иногда требует двойных или одинарных кавычек.
Хотя бывают случаи, когда вы не можете этого сделать, это подкрепляет идею, что мы должны стремиться сохранить каждый язык программирования в своем собственном стиле файлов и включать их, когда и где это необходимо.
Есть ли проблемы с безопасностью?
Да, но WordPress делает их чрезвычайно простыми в управлении, и хотя это технически подпадает под проверку данных, это тесно связано именно с тем, что мы обсуждаем в этой статье.
Основная проблема заключается в том, что в некоторых случаях мы можем динамически записывать атрибуты HTML в нашу разметку, значения которых мы не можем предвидеть. В таких случаях мы должны быть в состоянии избежать указанных данных.
К счастью, WordPress предоставляет функцию esc_attr
. Проще говоря, эта функция будет принимать входящую строку и кодировать символы, чтобы убедиться, что они правильно отображаются в браузере.
Практически говоря, вы бы использовали его в точности так, как демонстрирует Кодекс:
1
|
echo ‘<input type=»text» name=»fname» value=»‘ . esc_attr( $_POST[‘fname’] ) . ‘»>’;
|
Для получения дополнительной информации обязательно ознакомьтесь со статьей Кодекса .
Вывод
Таким образом, как общее практическое правило, вы должны придерживаться одинарных кавычек, если только вы не собираетесь оценивать строку или возвращать и выводить HTML, JavaScript или, возможно, даже CSS обратно в вызывающий абонент.
Так же, как утверждают стандарты кодирования:
Вы почти никогда не должны избегать кавычек в строке, потому что вы можете просто чередовать свой стиль цитирования.
Так как вы работаете со строками в своей будущей работе, помните об этих принципах, и это может помочь в обеспечении того, чтобы ваши строки были максимально чистыми и легкими для понимания в контексте ваших проектов на основе WordPress.