¿Qué significan %s, %1$s, etc.?

27 sept 2013, 17:15:42
Vistas: 89.9K
Votos: 18

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.

7
Comentarios

Esto es todo PHP plano. Consulta sprintf().

fuxia fuxia
27 sept 2013 17:23:58

El Codex existe para proporcionar documentación específica de WordPress. No está destinado a enseñar programación en PHP, y todas tus preguntas son sobre programación en PHP. La documentación de PHP se puede encontrar en php.net, y muchos tutoriales para principiantes de PHP se pueden encontrar usando Google.

Ben Miller Ben Miller
27 sept 2013 17:50:03

@BenMiller: Por favor, ten paciencia. Antes del comentario de toscho, ni siquiera era consciente de la posición de la pregunta. Ahora está casi claro con la respuesta de Dave.

Mayeenul Islam Mayeenul Islam
27 sept 2013 17:56:38

@MayeenulIslam, simplemente estaba intentando explicar por qué no encuentras ese tipo de explicaciones en el Codex. Lamento si di la impresión de ser impaciente.

Ben Miller Ben Miller
27 sept 2013 18:08:41

@BenMiller-RememberMonica, yo también lo interpreté como impaciencia, ya que mi primera impresión es que lo que sugieres es cerrar Stack Exchange, ya que casi todas las preguntas que se hacen pueden encontrarse en manuales y cualquier pregunta específica puede deducirse con pensamiento creativo. :-) De todos modos, sí, el Codex es una gran herramienta, pero en esta pregunta Google marca el ritmo ;)

Yannis Dran Yannis Dran
10 mar 2022 13:38:15

@YannisDran Este sitio (Wordpress.SE) es para preguntas específicas de WordPress. Las preguntas generales sobre programación PHP pertenecen a StackOverflow. Mi comentario sobre el Codex era en respuesta a la frase en la pregunta del OP donde se preguntaba por qué no podía encontrar la respuesta a su pregunta en el Codex.

Ben Miller Ben Miller
10 mar 2022 13:43:42

@YannisDran Finalmente, cuando escribí las palabras "todas tus preguntas", no me refería a las otras publicaciones del OP; me refería a las múltiples preguntas en esta publicación, todas las cuales están fuera de tema en este sitio y ninguna de las cuales tendrá respuestas en el Codex porque no son sobre WordPress.

Ben Miller Ben Miller
10 mar 2022 13:50:19
Mostrar los 2 comentarios restantes
Todas las respuestas a la pregunta 1
4
14

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.

27 sept 2013 17:33:22
Comentarios

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

Mayeenul Islam Mayeenul Islam
27 sept 2013 17:44:23

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.

Pat J Pat J
27 sept 2013 17:55:23

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

Pat J Pat J
27 sept 2013 17:57:15

NOTA: Los dos puntos dobles se utilizan para acceder solo a métodos y propiedades estáticas o sobrescritos de una clase, con métodos regulares se usa -> por ejemplo $miObjeto->algúnMétodo();

ed-ta ed-ta
11 jun 2015 19:56:45