Что означают %s, %1$s и подобные конструкции?
Изучая Q&A темы, я столкнулся с некоторыми старыми конструкциями, но обнаружил, что до сих пор не понимаю их значение и цель использования.
%1$s
- (используется для загрузки ID виджета)%2$s
- (используется для загрузки класса/классов виджета)%s
- (найдено здесь)
И как работают следующие конструкции? То есть, какое объяснение у этого формата кода?
!Website::getThemeOption("format_post/{$post_format}/content/hide")):
- (найдено здесь)if( !wp_verify_nonce( $_POST['my_noncename'] ) plugin_basename( __FILE__ ) ) return;
- (найдено здесь)
Я понимаю, что этот вопрос можно продолжать бесконечно... Но такие вещи нигде четко не объясняются. Я хочу не просто узнать их значение и цели, но получить внутреннее/базовое объяснение, чтобы понять их мотивы и принцип работы.
Кроме того, если такие вещи уже четко определены в Codex, я бы с удовольствием их прочитал. И хотелось бы иметь список таких интересных конструкций, если такой список уже где-то составлен.
Это, скорее, общий вопрос по программированию на PHP, и он может быть закрыт по этой причине. Но прежде чем это произойдет, давайте попробуем разобраться.
Строки, начинающиеся со знаков %, используют "формат printf". Например, %2$s
означает "замени этот токен вторым параметром и обработай его как строку".
Когда вы видите переменную в фигурных скобках внутри строки, например "Сегодня {$day}"
, это то же самое, что и без скобок — "Сегодня $day"
. Но такой формат делает переменную более заметной и предотвращает интерпретацию соседних символов как части имени переменной. Без фигурных скобок, как бы PHP понял, что делать с "Имя вашего робота будет {$firstName}Number5"
? Он бы увидел "$firstNameNumber5"
и попытался бы найти переменную с именем $firstNameNumber5 вместо просто $firstName.
Не совсем понятно, о чем идет речь в последнем примере. Вас смущает __FILE__
? Это магическая константа PHP, которая заменяется на полный путь к файлу, содержащему этот код.

Перед закрытием последний простой вопрос: !Website::
. Почему здесь двойное двоеточие?

::
связано с объектно-ориентированным программированием — в случае Website::getThemeOption
вы вызываете функцию getThemeOption
, принадлежащую классу Website
.

Также: {$var}
помогает PHP различать такие вещи, как {$complete_variable_name}
и {$prefix}_rest_of_name
, например.
