Jornada
Aprenda PHP
Um curso online de PHP grátis e interativo. Você escreve PHP em cada lição — sintaxe, funções, arrays, formulários, sessões e o básico para construir um site dinâmico — com dicas de IA quando algo dispara um warning e um certificado grátis ao concluir.
28,877+ codders inscritos
- Ideal para iniciantes
Ajuda de codificação com IA
Lições interativas e práticas
Narração em áudio em todas as lições
Questionários para testar seu conhecimento
Certificado grátis de conclusão
Programa
Seção 1
Fundamentos
Começar seçãoIniciarExpandirRecolherConstrua uma base sólida com conceitos essenciais e habilidades básicasIntroduction to PHP
5 lições331- 01The PHP LanguageDesafio
- 02Hello World!DesafioQuiz
- 03Tags and StatementsQuiz
- 04CommentsQuiz
- 05The new lineDesafioQuiz
Variables and Data Types
9 lições663- 01NumbersDesafioQuiz
- 02Strings and QuotesDesafioQuiz
- 03BooleansQuiz
- 04Naming ConventionsQuiz
- 05Recap - Variable InitDesafio
- 06Empty VariablesQuiz
- 07String ConcatenationDesafioQuiz
- 08Getting User InputDesafioQuiz
- 09Cast to Different TypesDesafioQuiz
Basic Operators
8 lições852- 01Arithmetic OperatorsDesafioQuiz
- 02Modulo OperatorDesafioQuiz
- 03Exponentiation OperatorDesafioQuiz
- 04Combined AssignmentDesafioQuiz
- 05Increment/DecrementDesafioQuiz
- 06Operator PrecedenceDesafioQuiz
- 07Recap - Simple CalculationsDesafio
- 08String OperatorsDesafioQuiz
Comparison & Logical Operators
5 lições532- 01Comparison OperatorsDesafioQuiz
- 02Equality & IdentityDesafioQuiz
- 03Logical Operators Part 1DesafioQuiz
- 04Logical Operators Part 2DesafioQuiz
- 05Recap - Simple LogicDesafio
Conditional Logic
6 lições639- 01If StatementDesafioQuiz
- 02If - ElseDesafioQuiz
- 03The Ternary OperatorDesafioQuiz
- 04Null Coalescing OperatorDesafioQuiz
- 05Switch StatementDesafioQuiz
- 06Recap - Making DecisionsDesafio
Arrays Part 1 - Indexed
7 lições645- 01Introduction to ArraysQuiz
- 02Creating Indexed ArraysDesafioQuiz
- 03Accessing Elements by IndexDesafioQuiz
- 04Modifying Elements by IndexDesafioQuiz
- 05Array Size with CountDesafioQuiz
- 06Adding Elements to an ArrayDesafioQuiz
- 07Recap - Managing a Simple ListDesafio
Arrays Part 2 - Associative
6 lições540- 01Intro to Associative ArraysQuiz
- 02Accessing Values by KeyDesafioQuiz
- 03Modifying Values by KeyDesafioQuiz
- 04Adding New Key-Value PairsDesafioQuiz
- 05Check if Key ExistsDesafioQuiz
- 06Recap - Key-Value Data StoreDesafio
Laços
7 lições746- 01Laço ForDesafioQuiz
- 02Laço WhileDesafioQuiz
- 03Laço ForeachDesafioQuiz
- 04Laços com Chaves e ValoresDesafioQuiz
- 05Instrução BreakDesafioQuiz
- 06Instrução ContinueDesafioQuiz
- 07Resumo - Iterando Sobre DadosDesafio
Projeto: Lista de Tarefas Simples
Projeto7 lições1- 01Visão Geral do Projeto e DadosDesafio
- 02Adicionando uma Nova TarefaProjeto
- 03Exibindo Todas as TarefasProjeto
- 04Marcando uma Tarefa como ConcluídaProjeto
- 05Removendo uma TarefaProjeto
- 06Filtrando por Status de ConclusãoProjeto
- 07Tratando Cenários de Lista VaziaProjeto
Functions
8 lições857- 01Declaring & Calling FunctionsDesafioQuiz
- 02Function ParametersDesafioQuiz
- 03Returning ValuesDesafioQuiz
- 04Default Parameter ValuesDesafioQuiz
- 05Type Declarations for ParamsDesafioQuiz
- 06Return Type DeclarationsDesafioQuiz
- 07Variable ScopeDesafioQuiz
- 08Recap - Creating Reusable CodeDesafio
Final Challenges
3 lições3- 01Challenge - Factorial CalcDesafio
- 02Challenge - Longest WordDesafio
- 03Challenge - Vowel CounterDesafio
Seção 2
Lógica & Fluxo
Começar seçãoIniciarExpandirRecolherDesenvolva habilidades de resolução de problemas e crie programas dinâmicos e interativosFunções Avançadas
9 lições965- 01Funções AnônimasDesafioQuizÁudio
- 02Closures e 'use'DesafioQuizÁudio
- 03Arrow FunctionsDesafioQuizÁudio
- 04Funções de CallbackDesafioQuizÁudio
- 05Usando 'call_user_func'DesafioQuizÁudio
- 06Funções VariáveisDesafioQuiz
- 07Passagem por ReferênciaDesafioQuiz
- 08Funções RecursivasDesafioQuiz
- 09Recapitulação: Mix de FunçõesDesafio
Manipulações Avançadas de Arrays
10 lições1066- 01Adicionando com 'array_push'DesafioQuiz
- 02Removendo com 'array_pop'DesafioQuiz
- 03Adicionando com 'array_unshift'DesafioQuiz
- 04Removendo com 'array_shift'DesafioQuiz
- 05Mesclando Arrays IndexadosDesafioQuiz
- 06Mesclando Arrays AssociativosDesafioQuiz
- 07Extraindo com 'array_slice'DesafioQuiz
- 08Valores com 'in_array'DesafioQuiz
- 09Chaves com 'array_search'DesafioQuiz
- 10Recapitulação: Exercício de PlaylistDesafio
Ordenação de Arrays
7 lições747- 01Ordenar Arrays Indexados (Crescente)DesafioQuiz
- 02Ordenar Arrays Indexados (Decrescente)DesafioQuiz
- 03Ordenar Arrays Associativos por ValorDesafioQuiz
- 04Ordenar Arrays Associativos por ChaveDesafioQuiz
- 05Ordenação por Ordem NaturalDesafioQuiz
- 06Ordenação Personalizada com 'usort'DesafioQuiz
- 07Recapitulação: Ordenação de LeaderboardDesafio
Arrays Multidimensionais
6 lições639- 01Criando um Array 2DDesafioQuiz
- 02Acessando Elementos de um Array 2DDesafioQuiz
- 03Modificando Elementos de um Array 2DDesafioQuiz
- 04Iterando com Loops AninhadosDesafioQuiz
- 05Arrays Associativos 2DDesafioQuiz
- 06Recapitulação: Exercício de Grade SimplesDesafio
Boletim de Alunos
6 lições6- 01Configuração do Projeto: Estrutura de DadosDesafio
- 02Adicionando um Novo AlunoDesafio
- 03Adicionando uma Nota a um AlunoDesafio
- 04Calculando a Média do AlunoDesafio
- 05Encontrando o Melhor AlunoDesafio
- 06Gerando um BoletimDesafio
Funções de Ordem Superior para Arrays
7 lições745- 01Transformando com 'array_map'DesafioQuiz
- 02'array_map' com Funções PersonalizadasDesafioQuiz
- 03Filtrando com 'array_filter'DesafioQuiz
- 04'array_filter' com Funções PersonalizadasDesafioQuiz
- 05Reduzindo com 'array_reduce'DesafioQuiz
- 06Percorrendo com 'array_walk'DesafioQuiz
- 07Recapitulação: Processamento de DadosDesafio
Trabalhando com Datas e Horas
6 lições539- 01A Função 'date()'Quiz
- 02Unix Timestamps com 'time()'DesafioQuiz
- 03Introdução ao Objeto DateTimeDesafioQuiz
- 04Formatando Objetos DateTimeDesafioQuiz
- 05Modificando Objetos DateTimeDesafioQuiz
- 06Recapitulação: Cálculos de DataDesafio
Tratamento de Erros e Exceções
7 lições650- 01Entendendo Erros no PHPQuiz
- 02O Bloco 'try...catch'DesafioQuiz
- 03O Bloco 'finally'DesafioQuiz
- 04Lançando uma ExceçãoDesafioQuiz
- 05Criando uma Exceção PersonalizadaDesafioQuiz
- 06Usando uma Exceção PersonalizadaDesafioQuiz
- 07Recapitulação: Validação de EntradaDesafio
Agendador de Eventos
Projeto6 lições1- 01Dados do EventoDesafio
- 02Adicionando um Novo EventoProjeto
- 03Listando Próximos EventosProjeto
- 04Ordenando Eventos por DataProjeto
- 05Filtrando Eventos por MêsProjeto
- 06Exibindo uma Contagem RegressivaProjeto
Desafios Finais
4 lições4- 01Desafio: Verificador de PalíndromosDesafio
- 02Desafio: Frequência de CaracteresDesafio
- 03Desafio: Total do Carrinho de ComprasDesafio
- 04Desafio: Filtro de Itens ÚnicosDesafio
Seção 3
Programação Orientada a Objetos
Começar seçãoIniciarExpandirRecolherDescubra como organizar o código com classes, objetos e estruturas reutilizáveisFundamentos de POO
9 lições969- 01Arquivos ExternosDesafioQuiz
- 02Introdução à POODesafioQuiz
- 03Classes vs ObjetosDesafioQuiz
- 04A Palavra-chave $thisDesafioQuiz
- 05MétodosDesafioQuiz
- 06PropriedadesDesafioQuiz
- 07Construtor (__construct)DesafioQuiz
- 08Destrutor (__destruct)DesafioQuiz
- 09Recapitulação - Calculadora SimplesDesafio
Namespaces e Autoloading
5 lições534- 01Introdução a NamespacesDesafioQuiz
- 02A Palavra-chave useDesafioQuiz
- 03Padrão de Autoloading PSR-4DesafioQuiz
- 04Autoloader do ComposerDesafioQuiz
- 05Recapitulação - Projeto OrganizadoDesafio
Propriedades de Classe
6 lições644- 01Propriedades de Instância vs EstáticasDesafioQuiz
- 02Constantes em ClassesDesafioQuiz
- 03Métodos e Propriedades EstáticosDesafioQuiz
- 04Propriedades Privadas e ProtegidasDesafioQuiz
- 05Propriedades Readonly (PHP 8.1)DesafioQuiz
- 06Recapitulação - Gerenciador de Conta BancáriaDesafio
Herança
6 lições644- 01Herança BásicaDesafioQuiz
- 02A Palavra-chave parent::DesafioQuiz
- 03Sobrescrita de MétodoDesafioQuiz
- 04A Palavra-chave finalDesafioQuiz
- 05Classes AbstratasDesafioQuiz
- 06Recapitulação - Hierarquia de FuncionáriosDesafio
Interfaces e Contratos
6 lições645- 01Introdução a InterfacesDesafioQuiz
- 02Implementando InterfacesDesafioQuiz
- 03Implementação de Múltiplas InterfacesDesafioQuiz
- 04Interface vs Classe AbstrataDesafioQuiz
- 05Type Hinting com InterfacesDesafioQuiz
- 06Recapitulação - Calculadora de FormasDesafio
Polimorfismo
5 lições536- 01Sobrescrita de Métodos RevisitadaDesafioQuiz
- 02Polimorfismo via InterfacesDesafioQuiz
- 03Type Hinting e Union TypesDesafioQuiz
- 04Late Static BindingDesafioQuiz
- 05Recapitulação - Processador de PagamentosDesafio
Encapsulamento
6 lições645- 01Público, Protegido, PrivadoDesafioQuiz
- 02Modificadores de Acesso em DetalhesDesafioQuiz
- 03Getters e SettersDesafioQuiz
- 04Ocultação de InformaçãoDesafioQuiz
- 05Promoção de Construtor (8.0)DesafioQuiz
- 06Recapitulação - Sistema de Registro de AlunosDesafio
Métodos Mágicos
7 lições753- 01Introdução aos Métodos MágicosDesafioQuiz
- 02__toString e __debugInfoDesafioQuiz
- 03__get, __set, __isset, __unsetDesafioQuiz
- 04__call e __callStaticDesafioQuiz
- 05__clone e Clonagem de ObjetosDesafioQuiz
- 06__serialize e __unserializeDesafioQuiz
- 07Recapitulação - Coleção PersonalizadaDesafio
Traits
5 lições544- 01Introdução a TraitsDesafioQuiz
- 02Usando Múltiplos TraitsDesafioQuiz
- 03Resolução de Conflitos de TraitsDesafioQuiz
- 04Métodos Abstratos em TraitsDesafioQuiz
- 05Traits vs HerançaDesafioQuiz
Conceitos Avançados de POO
7 lições761- 01Composição vs HerançaDesafioQuiz
- 02Injeção de DependênciaDesafioQuiz
- 03Classes AnônimasDesafioQuiz
- 04Enums (PHP 8.1)DesafioQuiz
- 05Fibers (PHP 8.1)DesafioQuiz
- 06Mergulho Profundo em Clonagem de ObjetosDesafioQuiz
- 07Geradores e IteradoresDesafioQuiz
Sistema de Tipos e Tratamento de Erros
7 lições754- 01Declarações de TiposDesafioQuiz
- 02Tipos AnuláveisDesafioQuiz
- 03Tipos de União e InterseçãoDesafioQuiz
- 04Classes de ExceçãoDesafioQuiz
- 05Hierarquia de Exceções PersonalizadasDesafioQuiz
- 06Try, Catch, FinallyDesafioQuiz
- 07Recapitulação - Validador de FormulárioDesafio
Padrões de Projeto Parte 1
5 lições546- 01Introdução aos Padrões de ProjetoDesafioQuiz
- 02Padrão SingletonDesafioQuiz
- 03Padrão FactoryDesafioQuiz
- 04Padrão ObserverDesafioQuiz
- 05Padrão StrategyDesafioQuiz
Padrões de Projeto Parte 2
7 lições764- 01Padrão CommandDesafioQuiz
- 02Padrão AdapterDesafioQuiz
- 03Padrão DecoratorDesafioQuiz
- 04Padrão Template MethodDesafioQuiz
- 05Padrão StateDesafioQuiz
- 06Padrão CompositeDesafioQuiz
- 07Padrão RepositoryDesafioQuiz
Projeto: Gerenciamento de Biblioteca
Projeto6 lições1- 01Visão Geral do ProjetoDesafio
- 02Classes Livro e UsuárioProjeto
- 03Sistema de EmpréstimosProjeto
- 04Funcionalidade de BuscaProjeto
- 05Interface AdministrativaProjeto
- 06Testes e IntegraçãoProjeto
Desafios Finais
4 lições4- 01Plataforma de E-LearningDesafio
- 02Sistema BancárioDesafio
- 03Desenvolvimento de Personagens de JogosDesafio
- 04Serviço de Aluguel de VeículosDesafio
Por que aprender PHP com a Coddy
- Rode código PHP de verdade no navegador. Sem XAMPP, sem Apache, sem servidor local pra configurar. Cada aula executa seu PHP no servidor e mostra a saída na hora.
- PHP para a web do jeito que ele é realmente usado hoje: variáveis, controle de fluxo, funções, arrays, includes, formulários, superglobals, sessões e padrões básicos de banco de dados. A base de PHP que todo desenvolvedor web precisa.
- As dicas de IA ajudam você a debugar erros de PHP e desvendar warnings sem entregar a resposta, então problemas comuns como undefined index e bugs de aspas viram momentos de aprendizado em vez de becos sem saída.
- Certificado grátis de PHP ao concluir o curso. Uma prova confiável para vagas de desenvolvimento web, WordPress e Laravel, onde PHP ainda é requisito básico.
Perguntas frequentes sobre aprender PHP
PHP é fácil de aprender?
PHP é uma das linguagens mais fáceis para começar. A sintaxe é tolerante, dá para misturar direto no HTML e você vê o resultado no navegador na hora. A maioria dos iniciantes monta uma página PHP funcionando na primeira hora. As partes mais delicadas (segurança, sessões, trabalhar com bancos de dados) vêm depois e são apresentadas aos poucos.
Ainda vale a pena aprender PHP em 2026?
Sim. O PHP ainda movimenta uma fatia enorme da web — só o WordPress roda em cerca de 40% de todos os sites, e frameworks como Laravel e Symfony estão ativos e em boa forma. Para desenvolvimento em WordPress, trabalho web em agências ou qualquer backend que converse com MySQL, PHP é uma habilidade bastante prática.
Quanto tempo leva para aprender PHP?
O básico de PHP — variáveis, condicionais, loops, funções, arrays — leva de uma a duas semanas com prática diária. Construir um site dinâmico pequeno com formulários, sessões e consultas a banco de dados normalmente leva mais um a três meses além disso. Aprofundar em Laravel ou desenvolvimento WordPress é uma jornada à parte.
Qual é a diferença entre PHP e HTML?
HTML é a linguagem de marcação que descreve a estrutura de uma página web. PHP é uma linguagem de programação que roda no servidor e gera o HTML antes dele chegar ao navegador — é assim que você cria páginas dinâmicas, faz login de usuários, salva dados de formulários e por aí vai. Elas trabalham juntas: HTML para o layout, PHP para a lógica.
Posso aprender PHP online de graça?
Sim. O curso interativo de PHP é gratuito — lições, exercícios de código, quizzes e certificado. O PHP roda no servidor em um ambiente sandbox, então você não precisa instalar Apache, MySQL ou XAMPP localmente para começar a programar.
Recebo um certificado de PHP ao concluir o curso?
Sim. Ao concluir o curso de PHP, você recebe um certificado de conclusão gratuito que pode adicionar ao seu currículo ou compartilhar no LinkedIn — útil junto com sites em WordPress, apps em Laravel ou qualquer projeto web do seu portfólio.