PHP

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.

Aprende PHP GRATIS y certifícate

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() y password_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.

Aprende PHP GRATIS online

Tutoriales de PHP

Aprende PHP con tutoriales de programación en PHP.

Introducción A Php

PHP

Introducción Y Entorno

Instalación Y Primer Programa De Php

PHP

Introducción Y Entorno

Tipos De Datos, Variables Y Constantes

PHP

Sintaxis

Operadores Y Expresiones

PHP

Sintaxis

Estructuras De Control

PHP

Sintaxis

Funciones Y Llamada De Funciones

PHP

Sintaxis

Cadenas De Texto Y Manipulación

PHP

Sintaxis

Manejo De Números

PHP

Sintaxis

Manejo De Fechas Y Tiempo

PHP

Sintaxis

Manejo De Arrays

PHP

Sintaxis

Introducción A La Poo En Php

PHP

Programación Orientada A Objetos

Clases Y Objetos

PHP

Programación Orientada A Objetos

Constructores Y Destructores

PHP

Programación Orientada A Objetos

Herencia

PHP

Programación Orientada A Objetos

Encapsulación

PHP

Programación Orientada A Objetos

Polimorfismo

PHP

Programación Orientada A Objetos

Interfaces

PHP

Programación Orientada A Objetos

Traits

PHP

Programación Orientada A Objetos

Namespaces

PHP

Programación Orientada A Objetos

Autoloading De Clases

PHP

Programación Orientada A Objetos

Manejo De Errores Y Excepciones

PHP

Programación Orientada A Objetos

Manejo De Archivos

PHP

Programación Orientada A Objetos

Patrones De Diseño

PHP

Programación Orientada A Objetos

Introducción A Los Formularios En Php

PHP

Formularios

Procesamiento De Datos De Formularios

PHP

Formularios

Manejo De Archivos En Formularios

PHP

Formularios

Redirecciones Y Retroalimentación Al Usuario

PHP

Formularios

Formularios Dinámicos Y Separación De Lógica

PHP

Formularios

Introducción A La Persistencia En Php

PHP

Persistencia

Conexión A Bases De Datos

PHP

Persistencia

Consultas Y Operaciones Crud

PHP

Persistencia

Gestión De Transacciones

PHP

Persistencia

Manejo De Errores Y Excepciones En Base De Datos

PHP

Persistencia

Patrones De Acceso A Datos

PHP

Persistencia

Concepto De Sesiones En Php

PHP

Sesiones Y Cookies

Configuración De Sesiones

PHP

Sesiones Y Cookies

Cookies

PHP

Sesiones Y Cookies

Manejo Avanzado De Sesiones Y Cookies

PHP

Sesiones Y Cookies

Principales Vulnerabilidades En Php

PHP

Seguridad

Seguridad En Formularios Y Entrada De Datos

PHP

Seguridad

Protección Frente A Inyección Sql

PHP

Seguridad

Gestión De Contraseñas Y Cifrado

PHP

Seguridad

Seguridad En Sesiones Y Cookies

PHP

Seguridad

Configuraciones De Php Para Seguridad

PHP

Seguridad

Introducción Al Testing En Php

PHP

Testing

Phpunit

PHP

Testing

Cobertura De Código En Testing

PHP

Testing

Test Doubles (Mocks, Stubs, Fakes, Spies)

PHP

Testing

Pruebas De Integración Y Funcionales

PHP

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.

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

Ver todos los módulos de PHP

Otras tecnologías

Rust
Rust

Rust

Backend

Lenguaje de programación de sistemas enfocado en seguridad, concurrencia y rendimiento.

C
C

C

Backend

Lenguaje de propósito general, eficiente y de bajo nivel.

R
R

R

Ciencia de Datos e IA

Lenguaje para análisis estadístico, manipulación de datos y visualización gráfica.

TypeScript
TypeScript

TypeScript

Full Stack

Superconjunto de JavaScript con tipado estático.

Apache Spark
PySpark

PySpark

Big Data

Motor unificado de análisis de datos distribuido para grandes volúmenes.

Go
Go

Go

Backend

Lenguaje de programación eficiente y concurrente creado por Google.

Django
Django

Django

Backend

Framework web Python para desarrollo rápido y seguro.

Spring Boot
SpringBoot

SpringBoot

Backend

Framework para desarrollo rápido de aplicaciones Java.

Laravel
Laravel

Laravel

Backend

Framework de PHP para desarrollo web backend.

Node.js
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

OpenCV

Ciencia de Datos e IA

Biblioteca de Python para Computer Vision en imágenes y vídeos.

Flask
Flask

Flask

Backend

Microframework web para Python, simple y flexible.

NestJS
Nest

Nest

Backend

Framework Node.js para crear aplicaciones escalables y eficientes.

Selenium
Selenium

Selenium

Testing / QA

Suite de herramientas open-source para automatizar navegadores web y pruebas de software de interfaz de usuario.

React
React

React

Frontend

Librería framework para frontend interfaces de usuario.

Vue.js
Vuejs

Vuejs

Frontend

Framework de JS progresivo para construir interfaces de usuario reactivas y modulares.

Docker
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

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

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

TensorFlow

Ciencia de Datos e IA

Biblioteca Python para redes neuronales en Deep Learning

Tailwind CSS
TailwindCSS

TailwindCSS

Frontend

Framework de utilidades CSS para diseños rápidos y personalizables.

Git
Git

Git

DevOps

Sistema de control de versiones distribuido.

scikit-learn
ScikitLearn

ScikitLearn

Ciencia de Datos e IA

Biblioteca de aprendizaje automático en Python.

Kotlin
Kotlin

Kotlin

Backend

Lenguaje de programación moderno y seguro para aplicaciones Android.

NumPy
Numpy

Numpy

Ciencia de Datos e IA

Biblioteca Python para computación científica y matrices.

HTML5
HTML

HTML

Frontend

Lenguaje de marcado para estructurar contenido web.

GNU Bash
Bash

Bash

Administración de sistemas

Intérprete de comandos para sistemas Unix y Linux.

Bootstrap
Bootstrap

Bootstrap

Frontend

Framework CSS para diseños web responsive y modernos.

2022-09-27T22:26:51.030457 image/svg+xml Matplotlib v3.6.0, https://matplotlib.org/
Matplotlib

Matplotlib

Ciencia de Datos e IA

Biblioteca Python para crear gráficos y visualizaciones.

Hibernate
Hibernate

Hibernate

Backend

ORM para Java, simplifica el acceso a bases de datos.

pandas
Pandas

Pandas

Ciencia de Datos e IA

Herramienta Python para análisis y manipulación de datos.

JavaScript
JavaScript

JavaScript

Full Stack

Lenguaje de scripting para desarrollo web interactivo.

Angular
Angular

Angular

Frontend

Framework web de Google para aplicaciones dinámicas.

CSS
CSS

CSS

Frontend

Lenguaje de estilo para diseñar páginas web atractivas.

Python
Python

Python

Backend

Lenguaje de programación fácil de aprender y versátil.

Acceder a todas las tecnologías