Ir al contenido principal

PHP

El curso

PHP es el lenguaje que se ejecuta en el servidor. El navegador pide una dirección, el servidor ejecuta el código, y lo que viaja de vuelta es el resultado —casi siempre HTML—. Del otro lado nunca se ve el programa: se ve lo que el programa produjo. Esa es toda la diferencia con HTML y JavaScript, y es la razón por la que un mismo sitio puede mostrar una cosa distinta a cada usuario.

Es un lenguaje de propósito general —tiene variables, funciones, objetos, excepciones— pero nació y creció para la web. Su trabajo típico es recibir lo que alguien cargó en un formulario, validarlo, guardarlo en una base de datos y armar la página con ese dato adentro. Todo lo que hay que saber para eso se ve en este curso, y se ve en el orden en que se necesita.

Todo el curso trabaja sobre un mismo sistema: la Tienda La Esquina, un almacén de barrio con productos, stock, clientes y ventas. Empieza mostrando un precio en pantalla y termina, nueve lecciones después, con un login, una base de datos y permisos por rol. No se aprende un lenguaje con ejemplos sueltos: se aprende cuando el mismo problema vuelve cada vez más grande.

Todo el proyecto se desarrolla en GNU/Linux, con Apache, PHP y MariaDB —por XAMPP o instalados desde los repositorios de la distribución—. Los comandos y las rutas que aparecen en el curso son los de esa plataforma.

El caso del curso

La Tienda La Esquina es el hilo que une las nueve lecciones. Cada una le agrega una pieza y deja el sistema funcionando un poco más. La razón es simple: un programa real no se arma por partes independientes. Cuando cambia la forma de guardar los precios, hay que revisar la pantalla que los muestra, la validación que los carga y el permiso que decide quién puede modificarlos. Eso solo se aprende si el caso es el mismo de punta a punta.

Entidad Qué guarda
Producto Código, nombre, categoría, precio y stock.
Categoría Almacén, bebidas, limpieza, perfumería. Sirve para agrupar el catálogo.
Cliente Nombre, correo, teléfono y dirección. Es una cuenta corriente del barrio.
Venta Número, fecha, cliente y el detalle de lo que se llevó.
Usuario Nombre de usuario, contraseña y rol. Es lo que decide qué puede hacer cada uno.

Quién usa el sistema

  • Vendedor: carga ventas y consulta el stock.
  • Administrador: mantiene el catálogo, cambia precios y ve los reportes.
  • Cliente: consulta sus propias compras. Solo las suyas.

Los productos, precios, clientes y direcciones que aparecen en el material son inventados; alcanza con no copiar una lista real de clientes a un archivo de práctica. En la lección 1 el sistema todavía no tiene base de datos ni pantallas: son archivos sueltos con datos escritos a mano. Alcanza para practicar el lenguaje y para tener, desde el primer día, algo concreto sobre lo que trabajar.

Antes de empezar

Todo el proyecto se desarrolla en GNU/Linux. No hay instrucciones para Windows ni para macOS: los comandos, las rutas y los permisos que aparecen en el curso son los de una distribución de la familia Debian —Ubuntu, Debian, Linux Mint—, que es la que se usa en el aula. En otra distribución cambia el gestor de paquetes; lo demás es igual. Hacen falta dos cosas, y las dos son software libre: el servidor y un editor.

El servidor

Hay dos formas de tener Apache, PHP 8.4 y MariaDB funcionando en GNU/Linux. Las dos sirven para todo el curso: conviene elegir una y quedarse con ella, porque las rutas cambian.

Opción 1: XAMPP para Linux

Es un paquete único que trae Apache, PHP y MariaDB juntos y ya configurados para entenderse. Se descarga de apachefriends.org, se instala en /opt/lampp y se pone en marcha con:

sudo /opt/lampp/lampp start

Los sitios van en /opt/lampp/htdocs y se abren en http://localhost/. Para el aula es la opción más rápida: no hay que tocar ninguna configuración y las tres piezas arrancan juntas. Trae además un panel gráfico, que se abre con sudo /opt/lampp/manager-linux-x64.run, para prender y apagar servicios sin terminal. Un detalle: el php de XAMPP queda en /opt/lampp/bin, así que si el comando no aparece en la terminal hay que agregar esa carpeta al PATH.

XAMPP trae la versión de PHP que correspondía cuando se publicó ese instalador. Antes de empezar se comprueba con php -v: tiene que decir 8.4 o superior. Si dice menos, se baja la última versión del instalador; si la última todavía no llegó a 8.4, se usa la opción 2.

La instalación paso a paso, con las particularidades de GNU/Linux y la comprobación de cada servicio, está explicada entera en Anexo · XAMPP.

Opción 2: instalación nativa desde los repositorios

Cada pieza se instala por separado, con el gestor de paquetes de la distribución:

sudo apt update
sudo apt install apache2 mariadb-server php php-mysql libapache2-mod-php

Los repositorios de la distribución no siempre traen 8.4 —Ubuntu 24.04, por ejemplo, publica 8.3—. Se comprueba con php -v y, si es anterior, se agrega el repositorio de PHP que mantiene la comunidad para esa distribución antes de instalar el resto.

Los sitios van en /var/www/html y Apache se maneja con systemctl: systemctl status apache2 para ver cómo está y sudo systemctl restart apache2 después de cada cambio de configuración. Es un poco más de trabajo al principio, pero es lo que se parece a un servidor de producción: los servicios son independientes y se administran por separado, que es lo que hay que saber hacer el día que el sistema se publica.

Hay un detalle de permisos que aparece el primer día, con cualquiera de las dos opciones: la carpeta del sitio queda a nombre de root, así que escribir ahí requiere sudo, y cambiar los permisos del directorio del servidor para trabajar cómodo es una mala costumbre. Al principio conviene dejar el proyecto en la carpeta personal y levantarlo con el servidor propio de PHP —php -S localhost:8000—, que no necesita permisos especiales; los archivos pasan a la carpeta del servidor recién cuando el sistema se publica.

El editor

Alcanza con Visual Studio Code, que está en los repositorios de las principales distribuciones y también se puede instalar desde su sitio. Conviene agregarle la extensión oficial de PHP, que marca errores de sintaxis mientras se escribe. Un IDE completo como PhpStorm hace lo mismo y bastante más, pero no es necesario para aprender.

Comprobar que quedó andando

Dos comprobaciones antes de arrancar. La primera, en la terminal:

php -v
# PHP 8.4.11 (cli) (NTS)

Si el número empieza con 8.4 o es mayor, el intérprete está instalado y es el que necesita el curso. El número de parche no importa, la rama sí.

La segunda comprobación es para ver si está el módulo que conecta con MariaDB:

php -m | grep pdo_mysql

Tiene que responder pdo_mysql. Si no responde nada, falta el paquete php-mysql y la lección 6 falla con un mensaje que no explica nada —«could not find driver»—, así que se pierde media tarde buscando el problema donde no está. Con php --ini se ve además qué archivo de configuración está usando el intérprete, que en GNU/Linux no es uno solo: Apache y la terminal leen php.ini distintos.

Las nueve lecciones

El recorrido tiene nueve paradas. Las cuatro primeras son el lenguaje y la web sin base de datos; las cuatro siguientes agregan objetos, persistencia, organización y seguridad; la última es el sistema completo, publicado.

Cómo se estudia

Tres cosas que hacen la diferencia, y que salen de cómo está armado el material:

  1. Escribir el código, no leerlo. Todo lo que aparece en las lecciones se puede copiar a un archivo, ejecutar y después romper a propósito para ver qué error da. El error es material de estudio: dice qué línea y qué esperaba el intérprete.
  2. Cambiar de mentalidad al principio. Quien viene de HTML y JavaScript está acostumbrado a que el código se ejecute en su computadora. En PHP el código se ejecuta en otra máquina y vuelve convertido en texto: nada de lo que quede en una variable sobrevive al final de la página.
  3. Hacer los ejercicios. Cada lección termina con una lista pensada para resolverse con lo visto en esa página y nada más. Las respuestas están al final, para comparar después de intentarlo, no antes.
  4. Autoevaluarse antes de seguir. Cada lección tiene una página de autoevaluación, con preguntas y ejercicios de práctica sobre todo lo que se vio. Se contesta sin mirar y recién después se abre la respuesta: reconocer una solución al leerla no es lo mismo que producirla.

Las lecciones no son un manual de referencia: son el recorrido de una materia. Se puede entrar a cualquiera para consultar algo puntual, pero la primera vez conviene hacerlas de corrido, con el botón Siguiente que aparece al pie de cada página.