¿Qué significan %s, %1$s, etc.?
En un hilo de preguntas y respuestas me encontré con algunas cosas antiguas, pero me di cuenta de que aún no entiendo su significado ni por qué usarlas.
%1$s
- (se usa para cargar el ID del widget)%2$s
- (se usa para cargar la clase/clases del widget)%s
- (encontrado aquí)
¿Y cómo funcionan las siguientes cosas? Me refiero a ¿cuál es la explicación del formato del código?
!Website::getThemeOption("format_post/{$post_format}/content/hide")):
- (encontrado aquí)if( !wp_verify_nonce( $_POST['my_noncename'] ) plugin_basename( __FILE__ ) ) return;
- (encontrado aquí)
Esta pregunta podría continuar..., lo sé. Pero cosas como estas no están claramente explicadas en ningún lugar. No solo quiero saber su significado y propósito, sino también una explicación interna/núcleo para entender su motivación y cómo funcionan.
Además, si estas cosas ya están claramente definidas en el Codex, me encantaría leerlas. Y me encantaría tener una lista de estas cosas curiosas si ya existe una lista organizada.
Esto es más una pregunta general sobre programación en PHP y podría cerrarse por ese motivo. Pero antes de que eso suceda, veamos si puedo aclarar algunos de estos conceptos.
Esas cadenas que comienzan con signos de porcentaje (%%) están en "formato printf". Por ejemplo, %2$s
se traduce como "reemplaza este token con el segundo parámetro, y trátalo como una cadena".
Cuando ves una variable entre llaves dentro de una cadena, como "Hoy es {$day}"
, eso es lo mismo que poner la variable sin llaves, como "Hoy es $day"
. Pero formatear la variable de esta manera la hace más visible, por lo que es más claro que hay una variable allí. También evita que otros caracteres adyacentes al nombre de la variable sean interpretados como parte del nombre. Sin las llaves, ¿sabrías qué hacer con "El nombre de tu robot sería {$firstName}Number5"
? PHP vería "$firstNameNumber5"
y buscaría una variable llamada $firstNameNumber5 en lugar de simplemente $firstName.
No estoy seguro de qué es lo que preguntas en el último ejemplo. ¿Es el __FILE__
lo que te confunde? Es una Constante Mágica de PHP que se reemplaza con la ruta completa al archivo donde se encuentra ese fragmento de código.

Antes de cerrar solo una última pregunta simple: !Website::
. ¿Por qué los dos puntos ahí?

El ::
tiene que ver con la programación orientada a objetos -- en el caso de Website::getThemeOption
, estás llamando a la función getThemeOption
que pertenece a la clase Website
.

También: {$var}
ayuda a PHP a distinguir entre algo como {$complete_variable_name}
y {$prefix}_rest_of_name
, por ejemplo.
