Recorrido
Aprende PHP
Un curso de PHP online, gratis e interactivo. Escribes PHP en cada lección — sintaxis, funciones, arrays, formularios, sesiones y los fundamentos para armar un sitio web dinámico — con pistas de IA cuando algo lanza un warning y un certificado gratis al terminar.
28,877+ codders inscritos
- Apto para principiantes
Ayuda de codificación con IA
Lecciones interactivas prácticas
Narración de audio en cada lección
Cuestionarios para poner a prueba tu conocimiento
Certificado gratuito de finalización
Programa
Sección 1
Fundamentos
Empezar secciónEmpezarExpandirContraerConstruye una base sólida con conceptos esenciales y habilidades básicasIntroduction to PHP
5 lecciones331- 01The PHP LanguageReto
- 02Hello World!RetoQuiz
- 03Tags and StatementsQuiz
- 04CommentsQuiz
- 05The new lineRetoQuiz
Variables and Data Types
9 lecciones663- 01NumbersRetoQuiz
- 02Strings and QuotesRetoQuiz
- 03BooleansQuiz
- 04Naming ConventionsQuiz
- 05Recap - Variable InitReto
- 06Empty VariablesQuiz
- 07String ConcatenationRetoQuiz
- 08Getting User InputRetoQuiz
- 09Cast to Different TypesRetoQuiz
Basic Operators
8 lecciones852- 01Arithmetic OperatorsRetoQuiz
- 02Modulo OperatorRetoQuiz
- 03Exponentiation OperatorRetoQuiz
- 04Combined AssignmentRetoQuiz
- 05Increment/DecrementRetoQuiz
- 06Operator PrecedenceRetoQuiz
- 07Recap - Simple CalculationsReto
- 08String OperatorsRetoQuiz
Comparison & Logical Operators
5 lecciones532- 01Comparison OperatorsRetoQuiz
- 02Equality & IdentityRetoQuiz
- 03Logical Operators Part 1RetoQuiz
- 04Logical Operators Part 2RetoQuiz
- 05Recap - Simple LogicReto
Conditional Logic
6 lecciones639- 01If StatementRetoQuiz
- 02If - ElseRetoQuiz
- 03The Ternary OperatorRetoQuiz
- 04Null Coalescing OperatorRetoQuiz
- 05Switch StatementRetoQuiz
- 06Recap - Making DecisionsReto
Arrays Part 1 - Indexed
7 lecciones645- 01Introduction to ArraysQuiz
- 02Creating Indexed ArraysRetoQuiz
- 03Accessing Elements by IndexRetoQuiz
- 04Modifying Elements by IndexRetoQuiz
- 05Array Size with CountRetoQuiz
- 06Adding Elements to an ArrayRetoQuiz
- 07Recap - Managing a Simple ListReto
Arrays Part 2 - Associative
6 lecciones540- 01Intro to Associative ArraysQuiz
- 02Accessing Values by KeyRetoQuiz
- 03Modifying Values by KeyRetoQuiz
- 04Adding New Key-Value PairsRetoQuiz
- 05Check if Key ExistsRetoQuiz
- 06Recap - Key-Value Data StoreReto
Bucles
7 lecciones746- 01Bucle forRetoQuiz
- 02Bucle whileRetoQuiz
- 03Bucle foreachRetoQuiz
- 04Bucles con claves y valoresRetoQuiz
- 05Sentencia breakRetoQuiz
- 06Sentencia continueRetoQuiz
- 07Resumen - Iterando sobre datosReto
Proyecto: Lista de Tareas Simple
Proyecto7 lecciones1- 01Resumen del Proyecto y DatosReto
- 02Agregando una Nueva TareaProyecto
- 03Mostrando Todas las TareasProyecto
- 04Marcando una Tarea como CompletadaProyecto
- 05Eliminando una TareaProyecto
- 06Filtrando por Estado de CompletaciónProyecto
- 07Manejando Escenarios de Lista VacíaProyecto
Functions
8 lecciones857- 01Declaring & Calling FunctionsRetoQuiz
- 02Function ParametersRetoQuiz
- 03Returning ValuesRetoQuiz
- 04Default Parameter ValuesRetoQuiz
- 05Type Declarations for ParamsRetoQuiz
- 06Return Type DeclarationsRetoQuiz
- 07Variable ScopeRetoQuiz
- 08Recap - Creating Reusable CodeReto
Final Challenges
3 lecciones3- 01Challenge - Factorial CalcReto
- 02Challenge - Longest WordReto
- 03Challenge - Vowel CounterReto
Sección 2
Lógica y Flujo
Empezar secciónEmpezarExpandirContraerDesarrolla habilidades de resolución de problemas y crea programas dinámicos e interactivosFunciones avanzadas
9 lecciones965- 01Funciones anónimasRetoQuizAudio
- 02Closures y 'use'RetoQuizAudio
- 03Funciones de flechaRetoQuizAudio
- 04Funciones callbackRetoQuizAudio
- 05Uso de 'call_user_func'RetoQuizAudio
- 06Funciones variablesRetoQuiz
- 07Paso por referenciaRetoQuiz
- 08Funciones recursivasRetoQuiz
- 09Resumen: Miscelánea de funcionesReto
Manipulación avanzada de arrays
10 lecciones1066- 01Agregar con 'array_push'RetoQuiz
- 02Eliminar con 'array_pop'RetoQuiz
- 03Agregar con 'array_unshift'RetoQuiz
- 04Eliminar con 'array_shift'RetoQuiz
- 05Fusionar arrays indexadosRetoQuiz
- 06Fusionar arrays asociativosRetoQuiz
- 07Extraer con 'array_slice'RetoQuiz
- 08Valores con 'in_array'RetoQuiz
- 09Claves con 'array_search'RetoQuiz
- 10Resumen: Ejercicio de PlaylistReto
Ordenar Arrays
7 lecciones747- 01Ordenar arrays indexados de forma ascendenteRetoQuiz
- 02Ordenar arrays indexados de forma descendenteRetoQuiz
- 03Ordenar arrays asociativos por valorRetoQuiz
- 04Ordenar arrays asociativos por claveRetoQuiz
- 05Ordenación por orden naturalRetoQuiz
- 06Ordenación personalizada con 'usort'RetoQuiz
- 07Resumen: Ordenar tablas de clasificaciónReto
Arreglos multidimensionales
6 lecciones639- 01Crear un arreglo 2DRetoQuiz
- 02Acceder a elementos de un arreglo 2DRetoQuiz
- 03Modificar elementos de un arreglo 2DRetoQuiz
- 04Iterar con bucles anidadosRetoQuiz
- 05Arreglos asociativos 2DRetoQuiz
- 06Resumen: Ejercicio de cuadrícula simpleReto
Registro de Calificaciones
6 lecciones6- 01Configuración del Proyecto: Estructura de DatosReto
- 02Agregar un Nuevo EstudianteReto
- 03Agregar una Calificación a un EstudianteReto
- 04Calcular el Promedio del EstudianteReto
- 05Encontrar al Mejor EstudianteReto
- 06Generar un Reporte de CalificacionesReto
Funciones de array de orden superior
7 lecciones745- 01Transformación con 'array_map'RetoQuiz
- 02'array_map' con funciones personalizadasRetoQuiz
- 03Filtrado con 'array_filter'RetoQuiz
- 04'array_filter' con funciones personalizadasRetoQuiz
- 05Reducción con 'array_reduce'RetoQuiz
- 06Recorrido con 'array_walk'RetoQuiz
- 07Resumen: Procesamiento de datosReto
Trabajando con fechas y horas
6 lecciones539- 01La función 'date()'Quiz
- 02Timestamps de Unix con 'time()'RetoQuiz
- 03Introducción al objeto DateTimeRetoQuiz
- 04Formateo de objetos DateTimeRetoQuiz
- 05Modificación de objetos DateTimeRetoQuiz
- 06Resumen: Cálculos con fechasReto
Manejo de errores y excepciones
7 lecciones650- 01Entendiendo los errores de PHPQuiz
- 02El bloque 'try...catch'RetoQuiz
- 03El bloque 'finally'RetoQuiz
- 04Lanzar una excepciónRetoQuiz
- 05Crear una excepción personalizadaRetoQuiz
- 06Usar una excepción personalizadaRetoQuiz
- 07Resumen: Validación de entradasReto
Planificador de eventos
Proyecto6 lecciones1- 01Datos del eventoReto
- 02Agregar un nuevo eventoProyecto
- 03Listar próximos eventosProyecto
- 04Ordenar eventos por fechaProyecto
- 05Filtrar eventos por mesProyecto
- 06Mostrar una cuenta regresivaProyecto
Desafíos finales
4 lecciones4- 01Desafío: Verificador de palíndromosReto
- 02Desafío: Frecuencia de caracteresReto
- 03Desafío: Total del carrito de comprasReto
- 04Desafío: Filtro de elementos únicosReto
Sección 3
Programación Orientada a Objetos
Empezar secciónEmpezarExpandirContraerDescubre cómo organizar el código con clases, objetos y estructuras reutilizablesFundamentos de OOP
9 lecciones969- 01Archivos externosRetoQuiz
- 02Introducción a OOPRetoQuiz
- 03Clases vs ObjetosRetoQuiz
- 04La palabra clave $thisRetoQuiz
- 05MétodosRetoQuiz
- 06PropiedadesRetoQuiz
- 07Constructor (__construct)RetoQuiz
- 08Destructor (__destruct)RetoQuiz
- 09Resumen - Calculadora simpleReto
Espacios de nombres y Autoloading
5 lecciones534- 01Introducción a los espacios de nombresRetoQuiz
- 02La palabra clave useRetoQuiz
- 03Estándar de Autoloading PSR-4RetoQuiz
- 04Autoloader de ComposerRetoQuiz
- 05Resumen - Proyecto organizadoReto
Propiedades de clase
6 lecciones644- 01Propiedades de instancia vs. estáticasRetoQuiz
- 02Constantes en clasesRetoQuiz
- 03Métodos y propiedades estáticosRetoQuiz
- 04Propiedades privadas y protegidasRetoQuiz
- 05Propiedades de solo lectura (PHP 8.1)RetoQuiz
- 06Resumen - Gestor de cuenta bancariaReto
Herencia
6 lecciones644- 01Herencia básicaRetoQuiz
- 02La palabra clave parent::RetoQuiz
- 03Sobrescritura de métodosRetoQuiz
- 04La palabra clave finalRetoQuiz
- 05Clases abstractasRetoQuiz
- 06Resumen - Jerarquía de empleadosReto
Interfaces y Contratos
6 lecciones645- 01Introducción a las InterfacesRetoQuiz
- 02Implementación de InterfacesRetoQuiz
- 03Implementación de Múltiples InterfacesRetoQuiz
- 04Interfaz vs Clase AbstractaRetoQuiz
- 05Type Hinting con InterfacesRetoQuiz
- 06Resumen - Calculadora de FormasReto
Polimorfismo
5 lecciones536- 01Sobrescritura de métodos revisadaRetoQuiz
- 02Polimorfismo mediante interfacesRetoQuiz
- 03Type Hinting y tipos de uniónRetoQuiz
- 04Enlace estático tardíoRetoQuiz
- 05Resumen - Procesador de pagosReto
Encapsulamiento
6 lecciones645- 01Público, Protegido, PrivadoRetoQuiz
- 02Modificadores de acceso a fondoRetoQuiz
- 03Getters y SettersRetoQuiz
- 04Ocultamiento de informaciónRetoQuiz
- 05Promoción de constructor (8.0)RetoQuiz
- 06Resumen - Sistema de registros de estudiantesReto
Métodos mágicos
7 lecciones753- 01Introducción a los métodos mágicosRetoQuiz
- 02__toString y __debugInfoRetoQuiz
- 03__get, __set, __isset, __unsetRetoQuiz
- 04__call y __callStaticRetoQuiz
- 05__clone y clonación de objetosRetoQuiz
- 06__serialize y __unserializeRetoQuiz
- 07Resumen - Colección personalizadaReto
Traits
5 lecciones544- 01Introducción a los TraitsRetoQuiz
- 02Uso de múltiples TraitsRetoQuiz
- 03Resolución de conflictos de TraitsRetoQuiz
- 04Métodos abstractos en TraitsRetoQuiz
- 05Traits frente a herenciaRetoQuiz
Conceptos avanzados de POO
7 lecciones761- 01Composición vs. HerenciaRetoQuiz
- 02Inyección de dependenciasRetoQuiz
- 03Clases anónimasRetoQuiz
- 04Enums (PHP 8.1)RetoQuiz
- 05Fibers (PHP 8.1)RetoQuiz
- 06Clonación de objetos a fondoRetoQuiz
- 07Generadores e IteradoresRetoQuiz
Sistema de tipos y manejo de errores
7 lecciones754- 01Declaraciones de tiposRetoQuiz
- 02Tipos anulablesRetoQuiz
- 03Tipos de unión e intersecciónRetoQuiz
- 04Clases de excepciónRetoQuiz
- 05Jerarquía de excepciones personalizadasRetoQuiz
- 06Try, Catch, FinallyRetoQuiz
- 07Resumen - Validador de formulariosReto
Patrones de diseño Parte 1
5 lecciones546- 01Introducción a los patrones de diseñoRetoQuiz
- 02Patrón SingletonRetoQuiz
- 03Patrón FactoryRetoQuiz
- 04Patrón ObserverRetoQuiz
- 05Patrón StrategyRetoQuiz
Patrones de diseño Parte 2
7 lecciones764- 01Patrón CommandRetoQuiz
- 02Patrón AdapterRetoQuiz
- 03Patrón DecoratorRetoQuiz
- 04Patrón Template MethodRetoQuiz
- 05Patrón StateRetoQuiz
- 06Patrón CompositeRetoQuiz
- 07Patrón RepositoryRetoQuiz
Proyecto: Gestión de biblioteca
Proyecto6 lecciones1- 01Descripción general del proyectoReto
- 02Clases de Libros y UsuariosProyecto
- 03Sistema de préstamosProyecto
- 04Funcionalidad de búsquedaProyecto
- 05Interfaz de administradorProyecto
- 06Pruebas e integraciónProyecto
Desafíos finales
4 lecciones4- 01Plataforma de E-LearningReto
- 02Sistema bancarioReto
- 03Desarrollo de personajes de videojuegosReto
- 04Servicio de alquiler de vehículosReto
Por qué aprender PHP con Coddy
- Ejecuta código PHP real en tu navegador. Sin XAMPP, sin Apache, sin servidor local que configurar. Cada lección corre tu PHP del lado del servidor y te muestra el resultado al instante.
- PHP para la web tal como se usa hoy: variables, control de flujo, funciones, arrays, includes, formularios, superglobals, sesiones y patrones básicos de bases de datos. Las bases de PHP que todo desarrollador web necesita.
- Las pistas de IA te ayudan a depurar errores de PHP y desenredar warnings sin darte la respuesta, así problemas comunes como índices indefinidos o errores de comillas se vuelven momentos de aprendizaje en lugar de callejones sin salida.
- Certificado de PHP gratis al terminar el curso. Una prueba creíble para puestos de desarrollo web, WordPress y Laravel, donde PHP sigue siendo un requisito básico.
Preguntas frecuentes sobre aprender PHP
¿PHP es fácil de aprender?
PHP es uno de los lenguajes más fáciles para empezar. La sintaxis es flexible, lo puedes mezclar directamente con HTML y ves los resultados en el navegador al instante. La mayoría de los principiantes arma una página PHP funcional dentro de la primera hora. Las partes más complicadas (seguridad, sesiones, trabajar con bases de datos) llegan después y se introducen poco a poco.
¿Vale la pena aprender PHP en 2026?
Sí. PHP sigue impulsando una buena parte de la web — solo WordPress corre aproximadamente el 40% de todos los sitios, y frameworks como Laravel y Symfony están sanos y activos. Para desarrollo en WordPress, trabajo web tipo agencia o cualquier backend que se conecte a MySQL, PHP es una habilidad muy práctica.
¿Cuánto tiempo toma aprender PHP?
Los fundamentos de PHP —variables, condicionales, bucles, funciones, arreglos— toman de una a dos semanas con práctica diaria. Armar un sitio dinámico pequeño con formularios, sesiones y consultas a una base de datos suele tomar de uno a tres meses adicionales. Profundizar en Laravel o en desarrollo con WordPress ya es otro camino aparte.
¿Cuál es la diferencia entre PHP y HTML?
HTML es el lenguaje de marcado que describe la estructura de una página web. PHP es un lenguaje de programación que se ejecuta en el servidor y genera HTML antes de que llegue al navegador — así es como produces páginas dinámicas, autenticas usuarios, guardas datos de formularios y demás. Funcionan en conjunto: HTML para la estructura, PHP para la lógica.
¿Puedo aprender PHP online gratis?
Sí. El curso interactivo de PHP es gratis — lecciones, ejercicios de código, cuestionarios y certificado. PHP corre del lado del servidor en un entorno aislado, así que no necesitas instalar Apache, MySQL ni XAMPP localmente para empezar a programar.
¿Recibo un certificado de PHP al terminar el curso?
Sí. Al terminar el curso de PHP recibes un certificado de finalización gratuito que puedes agregar a tu currículum o compartir en LinkedIn — útil para acompañar sitios en WordPress, apps en Laravel o cualquier proyecto web que hayas armado para tu portafolio.