Что означает токен %1$s в WordPress

16 февр. 2018 г., 21:50:01
Просмотры: 23.5K
Голосов: 6

Я часто встречаю токен %1$s и подобные ему в коде WordPress, но не могу понять, что он означает. Вот пример:

sprintf( __( '%1$s is deprecated. Use %2$s instead.' ),

Кто-нибудь знает, что это значит?

1
Комментарии

это используется функцией sprintf, смотрите здесь: https://secure.php.net/sprintf

mmm mmm
16 февр. 2018 г. 22:03:56
Все ответы на вопрос 2
0
15

Прочитайте документацию PHP по функции sprintf().

  • %s — это просто заполнитель для строки
  • %d — это просто заполнитель для числа

Пример использования sprintf выглядит следующим образом:

$variable = sprintf(
    'The %s ran down the %s',   // Строка с заполнителями
    'dog',      // Подставляется в первый %s
    'street'    // Подставляется во второй %s
);

В результате в переменную $variable будет записана строка:

Собака побежала по улице

Нумерация заполнителей делает код более понятным для разработчика, позволяя быстро определить, какая строка куда подставляется. Это также позволяет повторно использовать строки. Рассмотрим другой пример с нумерованными заполнителями:

$variable = sprintf(
    'The %1$s ran down the %2$s. The %2$s was made of %3$s',    // Строка с заполнителями
    'dog',      // Всегда будет использоваться в %1$s
    'street',   // Всегда будет использоваться в %2$s
    'gravel'    // Всегда будет использоваться в %3$s
);

В результате в переменную $variable будет записана строка:

Собака побежала по улице. Улица была сделана из гравия

Наконец, функция __() позволяет переводить передаваемые ей строки. Передавая заполнители в __(), а затем всю строку в sprintf(), мы можем переводить всё, что передаётся в функцию перевода, что делает наши строки и приложение более динамичными.

16 февр. 2018 г. 22:09:00
0

Это не особенность WordPress, а особенность PHP. %1$s, %2$s и т.д. являются плейсхолдерами для переменных в форматированной строке, возвращаемой функцией sprintf() (или выводимой функцией printf()).

1$ означает, что это первая переменная, 2$ - вторая, и так далее. Буква s указывает, что это переменная типа строка. Существуют и другие варианты (например, d обозначает целое число).

В вашем примере приведена неполная конструкция: полностью она, скорее всего, выглядит так:

sprintf( __( '%1$s устарела. Вместо неё используйте %2$s.' ),
$string_1,
$string_2 );
16 февр. 2018 г. 22:05:45