No concatenes cadenas, usa printf o sprintf en PHP

Una de las cosas más comunes que hacemos como desarrolladores es concatenar cadenas. El operador para concatenar cadenas en PHP es el punto. Concatenamos dos cadenas así:

$saludo = "hola" . " mundo";

Pero la cosa se complica cuando quieres concatenar varias cosas de distintos tipos, o concatenar resultados de llamar a funciones. Es por ello que hoy explicaré una alternativa a concatenar en PHP, y me refiero a las funciones printf y sprintf.

Nota: para el generador de código de CodeIgniter utilicé mucho la función sprintf.

La teoría

Estas dos funciones que veremos sirven para muchísimas cosas, pero aquí únicamente te explicaré a usarlas y cómo te ayudarán a mejorar (en algunas ocasiones) tu código. Funcionan exactamente que en C.

Lo que hace printf y sprintf es formatear una cadena con “placeholders”. La diferencia entre printf y sprintf es que printf imprime directamente el mensaje formateado, mientras que sprintf regresa una cadena que incluye el mensaje formateado.

La práctica: cómo usar printf

Vamos a ver algunas comparaciones entre usar echo concatenando cadenas o usar printf.

Para mandar un mensaje con variables puedes escribir esto:

printf("Hola %s tu edad es %d", $nombre, $edad);

En lugar de esto:

echo "hola $nombre tu edad es $edad";

Vas a agradecerlo cuando llames a funciones. Veamos este otro ejemplo en donde se imprime el resultado de llamar a dos funciones:

Claro que podrías almacenar el resultado de la llamada en variables separadas, pero el punto aquí era hacerlo de manera corta. Ahora veamos el equivalente con sprintf:

De hecho, desde que uno lee la cadena del formato sabe lo que se va a imprimir al final. Recuerda que estamos haciéndolo con ejemplos simples, aunque en la vida real a menudo vas a encontrar algunos realmente complejos.

Las comillas y echo

Otro problema que printf resuelve es cuando queremos imprimir y encerrar algo entre comillas. Tal vez no sea muy común lo que veremos a continuación, aunque de igual manera vamos a ver este ejemplo en donde no podemos usar comillas simples pero tenemos que concatenar un mensaje:

En este caso se muestran los datos encerrados entre comillas. En ocasiones se necesita eso, cosa que realmente se complica con más variables. Con printf sería distinto:

Así podría mostrar ejemplos, pero en resumen, printf es mejor que concatenar y usar echo en algunas ocasiones.

Un buen uso de printf

No creo que en la actualidad sea bueno usar PHP puro para mostrar HTML pero viene de maravilla cuando, por ejemplo, queremos renderizar un enlace que le envíe un correo a alguien. Normalmente sería así:

Con printf queda más expresivo:

Además de que nos evita poner la variable dos veces. En ese ejemplo usamos la numeración de argumentos en %1$s que se separa en:

  • %: signo de porcentaje, siempre va al inicio
  • 1$: el número de argumento que pasamos a printf
  • s: el formato, en este caso s es string, d es entero.

Puedes leer más en la documentación oficial.

PHP y sprintf

Como lo dije, la diferencia entre printf y sprintf es que sprintf devuelve el resultado en lugar de imprimirlo en el flujo de salida. Así:

Con esto podríamos obtener el mensaje formateado para guardarlo en una base de datos, concatenarlo con otros componentes y cosas de esas.

Conclusión

En ningún momento digo que esto debe usarse siempre, solamente estoy haciendo un pequeño análisis de cómo printf viene mejor en algunas ocasiones en donde echo no.

Todo dependerá de las situaciones a las que te enfrentes, pero siempre es bueno conocer alternativas.

Te invito a leer más sobre PHP aquí.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario