Ce înseamnă token-ul %1$s în WordPress

16 feb. 2018, 21:50:01
Vizualizări: 23.5K
Voturi: 6

Am văzut token-ul %1$s și altele similare mai des în codul WordPress în ultima vreme, dar nu îmi dau seama ce înseamnă. Iată un exemplu:

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

Știe cineva ce înseamnă?

1
Comentarii

este folosit de sprintf, vezi aici : https://secure.php.net/sprintf

mmm mmm
16 feb. 2018 22:03:56
Toate răspunsurile la întrebare 2
0
15

Citește documentația PHP despre sprintf().

  • %s este doar un substituent pentru un șir de caractere
  • %d este doar un substituent pentru un număr

Deci un exemplu de sprintf ar arăta astfel:

$variable = sprintf(
    'The %s ran down the %s',   // Șir cu substituenți
    'dog',      // Plasat în primul substituent %s
    'street'    // Plasat în al doilea substituent %s
);

Care va returna un șir către variabila noastră $variable:

The dog ran down the street

Prin numerotarea substituenților, este o modalitate prietenoasă pentru dezvoltatori de a identifica rapid unde va fi plasat fiecare șir următor. De asemenea, ne permite să refolosim un șir. Să luăm un alt exemplu cu substituenți numerotați:

$variable = sprintf(
    'The %1$s ran down the %2$s. The %2$s was made of %3$s',    // Șir cu substituenți
    'dog',      // Va fi întotdeauna folosit în substituentul %1$s
    'street',   // Va fi întotdeauna folosit în substituentul %2$s
    'gravel'    // Va fi întotdeauna folosit în substituentul %3$s
);

Care va returna un șir către variabila noastră $variable:

The dog ran down the street. The street was made of gravel

În final, funcția __() ne permite să traducem șirurile de caractere transmise acesteia. Prin transmiterea substituenților __() și apoi prin transmiterea întregului șir către sprintf(), putem traduce orice este transmis funcției de traducere, permițându-ne să facem șirul și aplicația noastră puțin mai dinamice.

16 feb. 2018 22:09:00
0

Nu este specific WordPress, este un lucru specific PHP. %1$s, %2$s, etc., sunt substituenți pentru variabile într-un șir formatat returnat de sprintf() (sau afișat de printf()).

1$ indică faptul că este prima variabilă, 2$ ar fi a doua și așa mai departe. s indică faptul că este o variabilă de tip șir de caractere. Există și alte opțiuni (de exemplu, d ar indica un întreg).

Exemplul pe care l-ai dat este incomplet: cu siguranță arată complet astfel:

sprintf( __( '%1$s este învechit. Folosește %2$s în loc.' ),
$string_1,
$string_2 );
16 feb. 2018 22:05:45