Curso de programación con PHP
PHP, el lenguaje de programación popular para el desarrollo de sitios web dinámicos y aplicaciones web. Aprende a programar con PHP.
PHP (acrónimo recursivo de "PHP: Hypertext Preprocessor") es un lenguaje de programación de código abierto especialmente diseñado para el desarrollo web y que puede ser incrustado en HTML. A diferencia de otros lenguajes de scripting del lado del cliente como JavaScript, PHP se ejecuta en el servidor, generando HTML que luego se envía al cliente. Esto significa que el cliente recibe los resultados de ejecutar el script, sin conocer el código subyacente.
Características principales de PHP
PHP se ha convertido en uno de los pilares fundamentales del desarrollo web moderno gracias a sus numerosas ventajas:
- Facilidad de aprendizaje: Su sintaxis es clara y similar a C y Java, lo que facilita su adopción.
- Versatilidad: Puede utilizarse en todos los principales sistemas operativos y soporta la mayoría de servidores web.
- Orientado a la web: Diseñado específicamente para crear sitios web dinámicos con acceso a bases de datos.
- Comunidad activa: Cuenta con una extensa comunidad de desarrolladores y abundante documentación.
- Gratuito y de código abierto: Disponible sin costo bajo la licencia PHP.
Evolución y relevancia actual
Desde su creación en 1994 por Rasmus Lerdorf, PHP ha evolucionado enormemente. La versión actual (PHP 8.x) incorpora características modernas como:
- Tipado estático opcional
- Programación orientada a objetos completa
- Funciones anónimas y closures
- Namespaces para organizar el código
- Traits para la reutilización de código
- JIT (Just-In-Time) compilation para mejor rendimiento
A pesar de la aparición de nuevas tecnologías, PHP sigue siendo extremadamente relevante en el panorama actual del desarrollo web. Alimenta más del 75% de los sitios web que utilizan lenguajes del lado del servidor, incluyendo plataformas populares como WordPress, Drupal, Magento y Laravel.
Fundamentos y sintaxis
El código PHP se delimita con las etiquetas <?php
y ?>
, permitiendo mezclar HTML y PHP en un mismo archivo. Esta característica facilita la creación de páginas web dinámicas donde el contenido puede generarse según diferentes condiciones.
<!DOCTYPE html>
<html>
<head>
<title>Mi primera página PHP</title>
</head>
<body>
<h1>Hola, mundo!</h1>
<?php
echo "<p>Esta parte es generada por PHP. La fecha actual es: " . date("Y-m-d") . "</p>";
?>
</body>
</html>
La sintaxis de PHP incluye elementos fundamentales como variables, operadores, estructuras de control y funciones. Las variables en PHP se prefijan con el símbolo $
y no requieren declaración de tipo, aunque desde PHP 7 se puede utilizar tipado opcional.
<?php
// Variables y tipos de datos
$nombre = "María"; // string
$edad = 28; // integer
$precio = 19.99; // float
$activo = true; // boolean
// Estructuras de control
if ($edad >= 18) {
echo "Eres mayor de edad";
} else {
echo "Eres menor de edad";
}
// Bucles
for ($i = 0; $i < 5; $i++) {
echo "Iteración número: $i <br>";
}
// Funciones
function saludar($nombre) {
return "¡Hola, $nombre!";
}
echo saludar($nombre);
?>
Programación orientada a objetos en PHP
PHP soporta completamente el paradigma de programación orientada a objetos desde su versión 5, con características como clases, herencia, interfaces, traits y más. Este enfoque permite crear código más organizado, reutilizable y mantenible.
<?php
class Persona {
// Propiedades
private $nombre;
private $edad;
// Constructor
public function __construct($nombre, $edad) {
$this->nombre = $nombre;
$this->edad = $edad;
}
// Métodos
public function presentarse() {
return "Hola, me llamo {$this->nombre} y tengo {$this->edad} años.";
}
}
// Creación de un objeto
$persona = new Persona("Carlos", 35);
echo $persona->presentarse();
?>
La POO en PHP incluye conceptos avanzados como encapsulación, herencia, polimorfismo, interfaces y traits, permitiendo implementar patrones de diseño sofisticados y arquitecturas de software robustas.
Manejo de formularios y datos
Una de las tareas más comunes en PHP es el procesamiento de formularios HTML. PHP facilita la captura y validación de datos enviados por el usuario, así como la generación de respuestas dinámicas.
<?php
// Verificar si el formulario ha sido enviado
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Validar y procesar datos
$nombre = htmlspecialchars($_POST["nombre"]);
$email = filter_var($_POST["email"], FILTER_VALIDATE_EMAIL);
if ($email === false) {
echo "El email no es válido";
} else {
echo "Gracias por tu mensaje, $nombre. Te contactaremos en $email.";
}
}
?>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
<label for="nombre">Nombre:</label>
<input type="text" id="nombre" name="nombre" required><br>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required><br>
<input type="submit" value="Enviar">
</form>
PHP proporciona superglobales como $_GET
, $_POST
, $_FILES
y $_REQUEST
que facilitan el acceso a los datos enviados por el usuario, junto con funciones para validar y sanitizar esta información, protegiendo así contra vulnerabilidades de seguridad.
Persistencia y bases de datos
La interacción con bases de datos es una funcionalidad esencial en PHP. El lenguaje ofrece múltiples opciones para conectar con sistemas de gestión de bases de datos, siendo MySQL/MariaDB, PostgreSQL y SQLite los más utilizados.
PHP proporciona tanto la extensión mysqli como PDO (PHP Data Objects) para trabajar con bases de datos. PDO ofrece una interfaz unificada para acceder a diferentes tipos de bases de datos:
<?php
try {
// Conexión a la base de datos
$pdo = new PDO('mysql:host=localhost;dbname=mibasededatos', 'usuario', 'contraseña');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Consulta preparada para evitar inyección SQL
$stmt = $pdo->prepare("SELECT * FROM usuarios WHERE email = :email");
$stmt->execute(['email' => $email]);
// Obtener resultados
$usuario = $stmt->fetch(PDO::FETCH_ASSOC);
if ($usuario) {
echo "Usuario encontrado: " . $usuario['nombre'];
} else {
echo "Usuario no encontrado";
}
} catch (PDOException $e) {
echo "Error de conexión: " . $e->getMessage();
}
?>
Las operaciones CRUD (Crear, Leer, Actualizar, Eliminar) son fundamentales en el desarrollo web, y PHP proporciona todas las herramientas necesarias para implementarlas de manera eficiente y segura.
Gestión de sesiones y cookies
PHP facilita el manejo de sesiones para mantener información entre diferentes páginas durante la visita de un usuario. Esto es esencial para funcionalidades como la autenticación de usuarios, carritos de compra y preferencias personalizadas.
<?php
// Iniciar o reanudar una sesión
session_start();
// Almacenar datos en la sesión
$_SESSION['usuario_id'] = 123;
$_SESSION['nombre_usuario'] = "juan_perez";
// Recuperar datos de la sesión
echo "Bienvenido de nuevo, " . $_SESSION['nombre_usuario'];
// Eliminar variables específicas de la sesión
unset($_SESSION['nombre_usuario']);
// Destruir completamente la sesión
session_destroy();
?>
Las cookies complementan las sesiones permitiendo almacenar información en el navegador del cliente por períodos más largos:
<?php
// Crear una cookie que dura 30 días
setcookie("preferencia_tema", "oscuro", time() + (86400 * 30), "/");
// Leer una cookie
if(isset($_COOKIE["preferencia_tema"])) {
echo "Tu tema preferido es: " . $_COOKIE["preferencia_tema"];
}
// Eliminar una cookie
setcookie("preferencia_tema", "", time() - 3600, "/");
?>
Seguridad en PHP
La seguridad es un aspecto crítico en el desarrollo web con PHP. El lenguaje proporciona herramientas para proteger aplicaciones contra vulnerabilidades comunes:
- Inyección SQL: Uso de consultas preparadas con PDO o mysqli.
- Cross-Site Scripting (XSS): Funciones como
htmlspecialchars()
para escapar datos de salida. - Cross-Site Request Forgery (CSRF): Implementación de tokens de seguridad en formularios.
- Gestión segura de contraseñas: Funciones como
password_hash()
ypassword_verify()
.
<?php
// Almacenamiento seguro de contraseñas
$contrasena = "mi_contrasena_secreta";
$hash = password_hash($contrasena, PASSWORD_DEFAULT);
// Verificación de contraseñas
if (password_verify($contrasena, $hash)) {
echo "La contraseña es válida";
} else {
echo "La contraseña es inválida";
}
?>
Testing en PHP
El testing automatizado es una práctica esencial en el desarrollo profesional con PHP. PHPUnit es el framework de testing más utilizado, permitiendo crear y ejecutar pruebas unitarias, de integración y funcionales.
<?php
use PHPUnit\Framework\TestCase;
class CalculadoraTest extends TestCase
{
public function testSuma()
{
$calculadora = new Calculadora();
$this->assertEquals(5, $calculadora->sumar(2, 3));
}
public function testDivision()
{
$calculadora = new Calculadora();
$this->assertEquals(2, $calculadora->dividir(10, 5));
// Probar que se lanza una excepción al dividir por cero
$this->expectException(InvalidArgumentException::class);
$calculadora->dividir(10, 0);
}
}
?>
El testing ayuda a detectar errores tempranamente, facilita el mantenimiento del código y permite implementar metodologías como el desarrollo guiado por pruebas (TDD).
Ecosistema y herramientas
El ecosistema de PHP es rico y diverso, con numerosas herramientas que facilitan el desarrollo:
- Composer: Gestor de dependencias que ha revolucionado el desarrollo en PHP.
- Frameworks: Laravel, Symfony, CodeIgniter, Yii, CakePHP, entre otros.
- CMS: WordPress, Drupal, Joomla, Magento.
- Herramientas de calidad de código: PHP_CodeSniffer, PHPStan, Psalm.
- Entornos de desarrollo: XAMPP, WAMP, Docker, Vagrant.
Estas herramientas permiten a los desarrolladores crear aplicaciones web robustas, mantenibles y escalables, siguiendo las mejores prácticas de la industria.
Aplicaciones y casos de uso
PHP se utiliza en una amplia variedad de aplicaciones web:
- Sitios web dinámicos y blogs
- Comercio electrónico y sistemas de pago
- Redes sociales y plataformas comunitarias
- Sistemas de gestión de contenidos (CMS)
- Aplicaciones empresariales y sistemas de gestión
- APIs RESTful para aplicaciones móviles y SPA
- Intranets y herramientas de colaboración
Su versatilidad, facilidad de uso y amplio soporte lo convierten en una excelente opción tanto para pequeños proyectos como para aplicaciones empresariales a gran escala.
Tendencias actuales y futuro de PHP
PHP continúa evolucionando para mantenerse relevante en el panorama tecnológico actual:
- Mejoras de rendimiento con el compilador JIT en PHP 8
- Características de tipado más robustas
- Integración con arquitecturas modernas como microservicios
- Adopción de patrones funcionales y reactivos
- Mejoras en seguridad y protección de datos
Estas tendencias aseguran que PHP seguirá siendo una tecnología fundamental en el desarrollo web durante los próximos años, adaptándose a las nuevas necesidades y paradigmas.
A lo largo de este curso, exploraremos todos estos aspectos de PHP, desde los fundamentos básicos hasta las técnicas avanzadas, proporcionándote las habilidades necesarias para desarrollar aplicaciones web robustas, seguras y eficientes con este versátil lenguaje de programación.
Tutoriales de PHP
Aprende PHP con tutoriales de programación en PHP.
Introducción A Php
Introducción Y Entorno
Instalación Y Primer Programa De Php
Introducción Y Entorno
Tipos De Datos, Variables Y Constantes
Sintaxis
Operadores Y Expresiones
Sintaxis
Estructuras De Control
Sintaxis
Funciones Y Llamada De Funciones
Sintaxis
Cadenas De Texto Y Manipulación
Sintaxis
Manejo De Números
Sintaxis
Manejo De Fechas Y Tiempo
Sintaxis
Manejo De Arrays
Sintaxis
Introducción A La Poo En Php
Programación Orientada A Objetos
Clases Y Objetos
Programación Orientada A Objetos
Constructores Y Destructores
Programación Orientada A Objetos
Herencia
Programación Orientada A Objetos
Encapsulación
Programación Orientada A Objetos
Polimorfismo
Programación Orientada A Objetos
Interfaces
Programación Orientada A Objetos
Traits
Programación Orientada A Objetos
Namespaces
Programación Orientada A Objetos
Autoloading De Clases
Programación Orientada A Objetos
Manejo De Errores Y Excepciones
Programación Orientada A Objetos
Manejo De Archivos
Programación Orientada A Objetos
Patrones De Diseño
Programación Orientada A Objetos
Introducción A Los Formularios En Php
Formularios
Procesamiento De Datos De Formularios
Formularios
Manejo De Archivos En Formularios
Formularios
Redirecciones Y Retroalimentación Al Usuario
Formularios
Formularios Dinámicos Y Separación De Lógica
Formularios
Introducción A La Persistencia En Php
Persistencia
Conexión A Bases De Datos
Persistencia
Consultas Y Operaciones Crud
Persistencia
Gestión De Transacciones
Persistencia
Manejo De Errores Y Excepciones En Base De Datos
Persistencia
Patrones De Acceso A Datos
Persistencia
Concepto De Sesiones En Php
Sesiones Y Cookies
Configuración De Sesiones
Sesiones Y Cookies
Cookies
Sesiones Y Cookies
Manejo Avanzado De Sesiones Y Cookies
Sesiones Y Cookies
Principales Vulnerabilidades En Php
Seguridad
Seguridad En Formularios Y Entrada De Datos
Seguridad
Protección Frente A Inyección Sql
Seguridad
Gestión De Contraseñas Y Cifrado
Seguridad
Seguridad En Sesiones Y Cookies
Seguridad
Configuraciones De Php Para Seguridad
Seguridad
Introducción Al Testing En Php
Testing
Phpunit
Testing
Cobertura De Código En Testing
Testing
Test Doubles (Mocks, Stubs, Fakes, Spies)
Testing
Pruebas De Integración Y Funcionales
Testing
Ejercicios de programación de PHP
Evalúa tus conocimientos en PHP con ejercicios de programación PHP de tipo Test, Puzzle, Código y Proyecto con VSCode.
Patrones de diseño
Reto clases y objetos
Tipos de datos, variables y constantes
Reto herencia
Reto archivos en formularios
Reto polimorfismo
Reto arrays
Reto formularios
Reto test con PHPUnit
Reto conexión a bases de datos
Reto transacciones
Reto try catch excepciones
Estructuras de control
Reto sentencias CRUD con PDO
Reto try catch de PDOException
Reto manejo de números
Reto archivos temporales
Calculadora en PHP
Reto sesiones
Reto namespaces
Reto traits
Reto mensajes y redirección en formularios
Reto cookies
Reto fechas y tiempo
Reto cifrado contraseñas
Reto funciones
Reto estructuras de control
Operadores y expresiones
Reto encapsulación avanzada
Autoloading de Clases
Reto cadenas de texto
Reto interfaces
Reto CRUD en PHP
Reto clase Libro
Tipo de tecnología
Lenguaje
Categoría laboral
Backend
Año de lanzamiento
1995
Developers
PHP Group
Todos los módulos del curso de PHP
PHP
Introducción y entorno
PHP
Sintaxis
PHP
Programación Orientada a Objetos
PHP
Formularios
PHP
Persistencia
PHP
Sesiones y cookies
PHP
Seguridad
PHP
Testing
Otras tecnologías
Rust
Rust
Backend
Lenguaje de programación de sistemas enfocado en seguridad, concurrencia y rendimiento.
C
C
Backend
Lenguaje de propósito general, eficiente y de bajo nivel.
R
R
Ciencia de Datos e IA
Lenguaje para análisis estadístico, manipulación de datos y visualización gráfica.
TypeScript
TypeScript
Full Stack
Superconjunto de JavaScript con tipado estático.
PySpark
PySpark
Big Data
Motor unificado de análisis de datos distribuido para grandes volúmenes.
Go
Go
Backend
Lenguaje de programación eficiente y concurrente creado por Google.
Django
Django
Backend
Framework web Python para desarrollo rápido y seguro.
SpringBoot
SpringBoot
Backend
Framework para desarrollo rápido de aplicaciones Java.
Laravel
Laravel
Backend
Framework de PHP para desarrollo web backend.
Node
Node
Backend
Node.js es un entorno de ejecución de JavaScript basado en el motor V8 de Google.
Java
Java
Backend
Lenguaje de programación versátil y multiplataforma.
OpenCV
OpenCV
Ciencia de Datos e IA
Biblioteca de Python para Computer Vision en imágenes y vídeos.
Flask
Flask
Backend
Microframework web para Python, simple y flexible.
Nest
Nest
Backend
Framework Node.js para crear aplicaciones escalables y eficientes.
Selenium
Selenium
Testing / QA
Suite de herramientas open-source para automatizar navegadores web y pruebas de software de interfaz de usuario.
React
React
Frontend
Librería framework para frontend interfaces de usuario.
Vuejs
Vuejs
Frontend
Framework de JS progresivo para construir interfaces de usuario reactivas y modulares.
Docker
Docker
DevOps
Plataforma de contenedores para aplicaciones portátiles.
CSharp
CSharp
Backend
Lenguaje C# de Microsoft para desarrollo en el ecosistema .NET para todo tipo de aplicaciones.
Streamlit
Streamlit
Ciencia de Datos e IA
Biblioteca Python para prototipado web UI rápido en ciencia de datos.
Seaborn
Seaborn
Ciencia de Datos e IA
Biblioteca de visualización de datos para Python.
SQL
SQL
Bases de datos
Lenguaje para gestionar bases de datos relacionales.
FastAPI
FastAPI
Backend
Framework web moderno y rápido para Python.
Fundamentos
Fundamentos
Full Stack
Fundamentos y bases de la programación de software moderna.
TensorFlow
TensorFlow
Ciencia de Datos e IA
Biblioteca Python para redes neuronales en Deep Learning
TailwindCSS
TailwindCSS
Frontend
Framework de utilidades CSS para diseños rápidos y personalizables.
Git
Git
DevOps
Sistema de control de versiones distribuido.
ScikitLearn
ScikitLearn
Ciencia de Datos e IA
Biblioteca de aprendizaje automático en Python.
Kotlin
Kotlin
Backend
Lenguaje de programación moderno y seguro para aplicaciones Android.
Numpy
Numpy
Ciencia de Datos e IA
Biblioteca Python para computación científica y matrices.
HTML
HTML
Frontend
Lenguaje de marcado para estructurar contenido web.
Bash
Bash
Administración de sistemas
Intérprete de comandos para sistemas Unix y Linux.
Bootstrap
Bootstrap
Frontend
Framework CSS para diseños web responsive y modernos.
Matplotlib
Matplotlib
Ciencia de Datos e IA
Biblioteca Python para crear gráficos y visualizaciones.
Hibernate
Hibernate
Backend
ORM para Java, simplifica el acceso a bases de datos.
Pandas
Pandas
Ciencia de Datos e IA
Herramienta Python para análisis y manipulación de datos.
JavaScript
JavaScript
Full Stack
Lenguaje de scripting para desarrollo web interactivo.
Angular
Angular
Frontend
Framework web de Google para aplicaciones dinámicas.
CSS
CSS
Frontend
Lenguaje de estilo para diseñar páginas web atractivas.
Python
Python
Backend
Lenguaje de programación fácil de aprender y versátil.