Что означают %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::. Почему здесь двойное двоеточие?
Mayeenul Islam
:: связано с объектно-ориентированным программированием — в случае Website::getThemeOption вы вызываете функцию getThemeOption, принадлежащую классу Website.
Pat J
Также: {$var} помогает PHP различать такие вещи, как {$complete_variable_name} и {$prefix}_rest_of_name, например.
Pat J