Saltar al contenido
sintaxis.php · devschool

Sintaxis básica de PHP, echo y comentarios

Lección 3 de 26 · 10 min de lectura · Actualizado el

En esta lección
  1. Las etiquetas <?php y ?>
  2. Mostrar texto: echo
  3. print: la alternativa
  4. El punto y coma
  5. Mayúsculas y minúsculas
  6. Comentarios
  7. La etiqueta corta <?=
  8. Sintaxis alternativa para plantillas
  9. Espacios y estilo
  10. Errores frecuentes
  11. Resumen

Cada lenguaje tiene sus reglas de escritura, su sintaxis. Las de PHP son pocas y bastante parecidas a las de JavaScript o Java, con una particularidad: el código PHP convive con el HTML en el mismo archivo. En esta lección aprenderás a abrir y cerrar bloques PHP, a mostrar texto con echo y print, a escribir comentarios y a usar la sintaxis especial pensada para plantillas HTML.

Las etiquetas <?php y ?>

PHP solo ejecuta lo que está entre la etiqueta de apertura <?php y la etiqueta de cierre ?>. Todo lo que queda fuera se envía al navegador sin tocar:

<p>Esto es HTML y sale tal cual.</p>
<?php
echo "<p>Esto lo genera PHP.</p>\n";
?>
<p>Y esto vuelve a ser HTML.</p>

Resultado:

<p>Esto es HTML y sale tal cual.</p>
<p>Esto lo genera PHP.</p>
<p>Y esto vuelve a ser HTML.</p>

Un archivo puede tener tantos bloques PHP como quieras. El intérprete va de arriba abajo: copia el HTML a la salida y, cuando encuentra <?php, ejecuta el código hasta el siguiente ?>.

Nota: la extensión .php es lo que hace que el servidor pase el archivo al intérprete. Un archivo .html con código PHP dentro no se ejecuta: el navegador recibiría las etiquetas <?php como texto.

Archivos que solo contienen PHP

Muchos archivos de un proyecto no tienen HTML: funciones, configuración, clases. En ellos se escribe <?php en la primera línea y no se cierra con ?>:

<?php
// config.php: solo PHP, sin etiqueta de cierre

$nombreWeb = "Rocódromo Vertical";
$emailContacto = "info@ejemplo.com";

¿Por qué no cerrarlo? Porque cualquier espacio o salto de línea que quede después de ?> se enviaría al navegador como salida. Parece inofensivo, pero si después necesitas enviar una cabecera HTTP (una redirección, una cookie, una sesión), PHP falla con el error headers already sent. Si no hay ?>, no puede quedar nada detrás. Es la norma en los estándares de estilo de PHP.

Mostrar texto: echo

echo envía texto a la salida: a la página si estás en el navegador o a la pantalla si estás en la terminal.

echo "Hola desde PHP\n";
echo 'También con comillas simples', "\n";
echo "Total: ", 25 * 3, " euros\n";
// Hola desde PHP
// También con comillas simples
// Total: 75 euros
  • Puede recibir varios valores separados por comas, que se muestran uno detrás de otro, sin espacio entre ellos.
  • Los textos van entre comillas dobles o simples. La diferencia entre ambas la verás en Cadenas.
  • \n es un salto de línea. Lo usamos en los ejemplos de terminal; en una página web el salto de línea del código no se ve, y para separar contenido usarás etiquetas HTML.

echo no es una función, sino una construcción del lenguaje, así que no necesita paréntesis. Puedes encontrarte echo("Hola"); y funciona, pero lo habitual es escribirlo sin ellos.

Generar HTML con echo

En una página, lo normal es que echo produzca etiquetas HTML:

<?php
$ruta = "Ruta del Cares";
$km = 12;
echo "<h2>$ruta</h2>\n";
echo "<p>Distancia: $km km</p>\n";

Resultado:

<h2>Ruta del Cares</h2>
<p>Distancia: 12 km</p>

Para el navegador es HTML corriente: no sabe ni le importa que lo haya escrito PHP.

print hace casi lo mismo que echo:

print "Reserva confirmada\n";
$resultado = print "Mesa para 4\n";
echo $resultado, "\n";
// Reserva confirmada
// Mesa para 4
// 1

Las diferencias son mínimas:

echoprint
Varios valoresSí, separados por comasNo, solo uno
Devuelve algoNoSiempre devuelve 1
Uso habitualEl estándarPoco frecuente

En la práctica, usa echo. Para mostrar valores con formato (dos decimales, ceros a la izquierda…) existen printf y sprintf, que verás en Cadenas.

El punto y coma

Cada instrucción termina con punto y coma ;. Es lo que le dice a PHP dónde acaba una orden y empieza la siguiente:

$a = 5;
$b = 3;
echo $a + $b, "\n";
// 8

Si lo olvidas, PHP muestra un error de sintaxis (Parse error) que suele señalar la línea siguiente, porque es ahí donde se da cuenta de que algo no cuadra:

PHP Parse error:  syntax error, unexpected variable "$b" in pedido.php on line 3

Hay una excepción: la última instrucción antes de ?> puede ir sin punto y coma, porque la etiqueta de cierre ya marca el final. Aun así, ponlo siempre: si luego añades otra línea, no tendrás que acordarte.

Mayúsculas y minúsculas

PHP es curioso con esto:

  • Los nombres de variables sí distinguen mayúsculas y minúsculas: $precio, $Precio y $PRECIO son tres variables distintas.
  • Las palabras clave (echo, if, while…) y los nombres de funciones no las distinguen: ECHO y Echo funcionan igual que echo.

Que algo funcione no significa que sea buena idea. Escribe siempre las palabras clave y las funciones en minúsculas, como hace todo el mundo.

Comentarios

Un comentario es texto que PHP ignora. Sirve para explicar el código a quien lo lea después, incluido tú dentro de unos meses. PHP tiene tres tipos:

// Comentario de una línea (el más usado)
# También de una línea, estilo terminal (poco habitual)

/*
   Comentario de varias líneas.
   Útil para desactivar temporalmente un trozo de código.
*/

$iva = 0.21; // también puede ir al final de una línea
echo $iva * 100, "%\n";
// 21%

Además existen los comentarios de documentación o docblocks, que empiezan por /**. Los editores como VS Code los leen y te muestran la descripción al usar una función:

/**
 * Calcula el precio final con IVA.
 */
function precioConIva(float $precio): float
{
    return $precio * 1.21;
}

echo precioConIva(100), "\n";
// 121

Las funciones las verás más adelante; de momento quédate con la forma del comentario.

Consejo: comenta el porqué, no el qué. $total = $total * 0.9; // multiplica por 0.9 no aporta nada; // los socios tienen un 10 % de descuento sí.

Nota: desde PHP 8, #[ tiene un significado especial: empieza un atributo (una etiqueta que se pone a funciones y clases). Por eso es mejor usar siempre // para los comentarios de una línea.

La etiqueta corta <?=

Imprimir un valor en medio del HTML es tan frecuente que PHP tiene un atajo. Estas dos líneas hacen lo mismo:

<?php $socio = "Marta"; ?>
<p>Bienvenida, <?php echo $socio; ?></p>
<p>Bienvenida, <?= $socio ?></p>

Resultado:

<p>Bienvenida, Marta</p>
<p>Bienvenida, Marta</p>

<?= equivale a <?php echo y está siempre disponible. Es la forma preferida en las plantillas, los archivos que son sobre todo HTML con huecos que rellena PHP.

Cuidado: no confundas <?= con la etiqueta corta <? a secas (sin php). Esa depende de una opción de configuración que suele estar desactivada, así que el código que la usa deja de funcionar al cambiar de servidor. Verás en código antiguo <? echo $x; ?>: escríbelo siempre como <?php o <?=.

Sintaxis alternativa para plantillas

Las estructuras de control como if o foreach usan llaves { }. Mezcladas con mucho HTML, las llaves se pierden y cuesta saber qué cierra qué. Para eso PHP ofrece una sintaxis alternativa: se cambia la llave de apertura por dos puntos : y la de cierre por una palabra (endif;, endforeach;, endfor;, endwhile;, endswitch;).

Aquí tienes una plantilla que muestra un aviso solo si hay plazas libres y después una lista de rutas:

<?php
$plazasLibres = 3;
$rutas = ["Picos de Europa", "Sierra de Gredos", "Ordesa"];
?>
<?php if ($plazasLibres > 0): ?>
    <p class="aviso">Quedan <?= $plazasLibres ?> plazas.</p>
<?php else: ?>
    <p class="aviso">Completo.</p>
<?php endif; ?>
<ul>
<?php foreach ($rutas as $ruta): ?>
    <li><?= $ruta ?></li>
<?php endforeach; ?>
</ul>

Resultado:

    <p class="aviso">Quedan 3 plazas.</p>
<ul>
    <li>Picos de Europa</li>
    <li>Sierra de Gredos</li>
    <li>Ordesa</li>
</ul>

Se lee casi como HTML: cada endif; y endforeach; dice claramente qué está cerrando. Aún no conoces if ni foreach (los verás en condicionales y bucles); lo importante ahora es reconocer el estilo.

La regla práctica:

  • En archivos de lógica (solo PHP), usa llaves.
  • En plantillas (mucho HTML), usa la sintaxis alternativa con <?=.

Espacios y estilo

A PHP le dan igual los espacios, tabuladores y saltos de línea entre instrucciones: estas dos versiones son equivalentes para el intérprete.

$total=10*3;echo $total,"\n";

$total = 10 * 3;
echo $total, "\n";
// 30
// 30

Para las personas, la segunda es mucho más legible. La comunidad de PHP sigue una guía de estilo común (PSR-12 y su sucesora, PER Coding Style). Lo esencial:

  • Cuatro espacios de sangría, no tabuladores.
  • Una instrucción por línea.
  • Espacios alrededor de los operadores: $a + $b.
  • Variables y funciones en camelCase: $precioTotal, calcularMedia().
  • En archivos solo PHP, sin ?> al final.

Errores frecuentes

  • Olvidar el punto y coma: Parse error que apunta a la línea siguiente. Revisa la línea anterior a la indicada.
  • Cerrar con ?> un archivo que solo tiene PHP y dejar un salto de línea detrás: provoca headers already sent al usar sesiones o redirecciones.
  • Usar la etiqueta <? sin php: puede no funcionar en otro servidor. Usa <?php o <?=.
  • Poner código PHP en un archivo .html: no se ejecuta. La extensión debe ser .php.
  • Esperar que \n cree un salto de línea en la página: en HTML los saltos de línea del código no se ven. Usa párrafos, listas o <br>.
  • Confundir $Precio y $precio: las variables distinguen mayúsculas; PHP las trata como variables distintas.

Resumen

ConceptoLo esencial
<?php ... ?>Delimita el código PHP; lo de fuera es HTML que se envía tal cual
Archivo solo PHPEmpieza por <?php y no se cierra
echoMuestra uno o varios valores separados por comas
printComo echo, pero un solo valor y devuelve 1
;Termina cada instrucción
Comentarios// una línea, /* */ varias, /** */ documentación
<?= $x ?>Atajo de <?php echo $x; ?> para plantillas
Sintaxis alternativaif (...): … endif;, foreach (...): … endforeach;
MayúsculasLas variables las distinguen; las palabras clave y funciones, no

Ya sabes escribir y mostrar cosas; ahora toca guardarlas en variables y conocer los tipos de datos de PHP.

Pon a prueba lo que has aprendido

[PHP] ¿Qué muestra este código?
<?php
$r = print "Hola\n";
echo $r, "\n";

[PHP] Falta el punto y coma al final de la línea 2. ¿Qué ocurre al ejecutar el script?
<?php
$a = 5
$b = 3;
echo $a + $b;

[PHP] ¿Qué hace PHP con este código?
<?php
$Precio = 10;
echo $precio;

[PHP] ¿Con qué es equivalente <p>Hola, <?= $socio ?></p>?

¿Te ha quedado claro? Márcala y verás tu progreso en el explorador.