O que o token% 1 $ s no WordPress representa [fechado]

2

Eu vi o token% 1 $ e similares com mais freqüência no código do WordPress recentemente, mas não consigo entender o que isso significa. Aqui um exemplo:

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

Alguém sabe o que isso significa?

    
por Martin 16.02.2018 / 20:50

2 respostas

8

Leia os documentos do PHP no sprintf () .

  • %s é apenas um espaço reservado para uma string
  • %d é apenas um espaço reservado para um número

Então, um exemplo de sprintf seria assim:

$variable = sprintf(
    'The %s ran down the %s',   // String with placeholders
    'dog',      // Placed in the first %s placeholder
    'street'    // Placed in the second %s placeholder
);

Que retornará uma string para nossa variável $variable :

  

O dog percorreu a rua

Por meio da numeração dos espaços reservados, é uma maneira amigável para desenvolvedores de informar rapidamente qual string seguinte será colocada onde. Também nos permite reutilizar uma string. Vamos dar outro exemplo com espaços reservados numerados:

$variable = sprintf(
    'The %1$s ran down the %2$s. The %2$s was made of %3$s',    // String with placeholders
    'dog',      // Will always be used in %1$s placeholder
    'street',   // Will always be used in %2$s placeholder
    'gravel'    // Will always be used in %3$s placeholder
);

Que retornará uma string para nossa variável $variable :

  

O dog percorreu a rua . A rua era feita de cascalho

Por fim, a função __() nos permite traduzir as strings passadas para ela. Ao passar __() espaços reservados e, em seguida, passar essa sequência inteira para sprintf() , podemos traduzir o que for passado para a função de tradução, o que nos permite tornar nossa string e aplicação um pouco mais dinâmicas.

    
por Howdy_McGee 16.02.2018 / 21:09
4

Não é uma coisa do WordPress, é uma coisa PHP. %1$s , %2$s , etc., são espaços reservados para variáveis em uma string formatada retornada por sprintf() (ou impressa por printf() ).

O 1$ indica que é a variável primeiro , 2$ seria o segundo e assim por diante. O s indica que é uma variável string . Existem outras opções (por exemplo, d indicaria um inteiro).

O exemplo que você dá é incompleto: é certamente algo assim na sua totalidade:

sprintf( __( '%1$s is deprecated. Use %2$s instead.' ),
$string_1,
$string_2 );
    
por Pat J 16.02.2018 / 21:05