Bot interactivo en PHP con bucle while

Resumen

Crear un bot interactivo en PHP que pregunte, espere tu respuesta y simule pensar es un ejercicio ideal para afianzar lo aprendido sobre estructuras, bucles y ejecutables. Aquí construyes un pequeño programa que corre directo en la terminal y sienta la base para proyectos más complejos.

¿Cómo se organiza un proyecto PHP con ejecutables?

La estructura del proyecto importa tanto como el código. Cuando vas a fabricar un ejecutable, necesitas una carpeta dedicada para mantener el orden.

¿Por qué la carpeta se llama bin?

La carpeta bin es un estándar casi por herencia histórica. Allí se guardan los binarios y scripts que generan alguna acción dentro del proyecto. Junto a ella conviven Composer y la carpeta src, cada una con su rol claro.

Entonces el esquema queda así:

  • Composer para manejar dependencias.
  • src para el código fuente del proyecto.
  • bin para los archivos ejecutables que disparan acciones.

¿Qué es la carpeta bin en un proyecto? Es la convención para guardar archivos ejecutables y scripts que ejecutan acciones. Su nombre viene de "binario" y se usa por tradición en proyectos PHP, Node y otros entornos.

¿Cómo capturar la entrada del usuario en la terminal?

Dentro de bin creas un archivo PHP que abre con su etiqueta de siempre y muestra una pregunta en pantalla. Si solo imprimes el texto, aparece un símbolo extraño al final, así que cierras con la constante PHP_EOL, que representa el final de línea y deja la salida más limpia.

Para simular una conversación necesitas un bucle while con condición verdadera, de modo que la primera entrada siempre exista y el programa siga preguntando hasta que tú decidas detenerlo.

Dentro del bucle conviven varias condiciones:

  1. Si el usuario escribe salir, se rompe el bucle con un break.
  2. Si el usuario no escribe nada, también se rompe el ciclo.
  3. Si escribe cualquier otra cosa, el bot simula pensar y responde.

La simulación de "está pensando" se logra con una pausa de aproximadamente dos segundos antes de imprimir la respuesta. Esa pequeña espera es lo que le da sensación de vida al bot, aunque por dentro sea un mensaje fijo.

¿Cómo ejecutar un archivo PHP como binario?

La primera forma es la más conocida: escribir php bin/nombre-del-archivo y presionar enter. Funciona siempre, pero existe una alternativa más elegante.

¿Qué hace el shebang en un script PHP?

Puedes ejecutar el archivo con ./bin/nombre-del-archivo, pero por defecto eso falla. Necesitas dos cosas: permiso de ejecución y una línea de intérprete.

  • El permiso se asigna con chmod, cambiando el modo del archivo para que pueda ejecutarse.
  • La línea de intérprete se escribe al inicio del archivo con numeral y signo de admiración (el famoso shebang), indicando que el sistema debe ejecutarlo con PHP.

¿Qué es el shebang? Es la línea que empieza con #! al inicio de un script y le dice al sistema operativo qué intérprete usar para ejecutar el archivo, por ejemplo PHP, Bash o Python.

Con esos dos ajustes ya tienes dos formas de acceder al bot: la tradicional con php adelante, y la directa con ./bin/..., como si fuera un comando propio del sistema.

¿Qué conceptos clave aparecen en la práctica?

La clase mezcla varios fundamentos que vale la pena nombrar mientras los usas:

  • Carpeta bin [0:36]: convención para guardar ejecutables del proyecto.
  • PHP_EOL [1:18]: constante que añade el final de línea y limpia la salida.
  • Bucle while con condición true [1:38]: garantiza que la primera entrada siempre exista y el programa siga corriendo.
  • Condicional if con break [2:08]: rompe el bucle cuando el usuario escribe "salir" o deja vacío.
  • Simulación con pausa de dos segundos [2:48]: da la ilusión de que el bot piensa antes de responder.
  • chmod para permiso de ejecución [3:32]: habilita correr el archivo como binario.
  • Shebang con #! [3:46]: indica al sistema que use PHP como intérprete.

Con estas piezas tienes un programa pequeño que despierta a un bot, captura tu mensaje, simula pensar y responde. La estructura queda lista para crecer.

¿El siguiente paso? Detecta la palabra hola dentro del input y haz que el bot responda con un mensaje personalizado en lugar de la respuesta genérica. Déjame tu solución en los comentarios y cuéntame cómo resolviste la condición.