J'ai vu le jeton% 1 $ et des objets similaires plus souvent dans le code WordPress, mais je ne peux pas comprendre ce que cela signifie. Voici un exemple:
sprintf( __( '%1$s is deprecated. Use %2$s instead.' ),
Est-ce que quelqu'un sait ce que cela signifie?
Lisez les docs PHP sur sprintf () .
%s
est juste un espace réservé pour une chaîne%d
est juste un espace réservé pour un nombreAinsi, un exemple de sprintf ressemblerait à ceci:
$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
);
Ce qui retournera une chaîne dans notre variable $variable
:
Le chien parcourait la rue street
En numérotant les espaces réservés, c’est à la fois un moyen convivial pour les développeurs d’indiquer rapidement quelle chaîne sera placée à l’endroit suivant. Cela nous permet également de réutiliser une chaîne. Prenons un autre exemple avec des espaces réservés numérotés:
$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
);
Ce qui retournera une chaîne dans notre variable $variable
:
Le chien parcourait la rue street . Le rue était constitué de gravel
Enfin, la fonction __()
nous permet de traduire les chaînes qui lui sont transmises. En passant les espaces réservés __()
, puis en transmettant toute la chaîne à sprintf()
, nous pouvons traduire tout ce qui est transmis à la fonction de traduction, ce qui nous permet de rendre notre chaîne et notre application un peu plus dynamiques.
Ce n'est pas une chose WordPress, c'est une chose PHP. %1$s
, %2$s
, etc., sont des espaces réservés pour les variables dans une chaîne mise en forme renvoyée par sprintf()
(ou imprimée par printf()
).
Le 1$
indique que c'est le premier variable, 2$
serait le deuxième, et ainsi de suite. La s
indique qu'il s'agit d'une string variable. D'autres options existent (par exemple, d
indiquerait un entier).
L'exemple que vous donnez est incomplet: c'est certainement quelque chose comme ceci dans son intégralité:
sprintf( __( '%1$s is deprecated. Use %2$s instead.' ),
$string_1,
$string_2 );