PHP para aplicações reais
Pratica PHP com contratos JSON e PDO, transações, concorrência, streams e jobs CLI. Inclui diagnóstico de falhas e decisões de suporte de aplicações.
Objetivos e percurso
Onze aulas, 100 perguntas regulares e 20 cenários originais ligam PHP a aplicações e suporte de produção. Abrange contratos JSON e CSV, autorização, PDO, cursores, propriedade de transações, conflitos, idempotência e ciclo de vida de jobs CLI. Os exemplos anteriores foram executados em PHP 8.3.17; os novos em PHP 8.4.4 com SQLite 3.51.2. A referência documental PHP 8.5 não significa execução nessa versão. Os exemplos são fictícios e não representam processos internos de um banco. A avaliação final reutiliza 68 decisões em 120 minutos. Os limites quantitativos inferiores maduros estão atingidos; validação no runtime 8.5, integração com outros motores e revisão independente continuam pendentes.
Para quem: Programadores e equipas de suporte que mantêm aplicações PHP e integrações com bases de dados.
Pré-requisitos: Noções de variáveis, funções, HTTP e tabelas SQL. Os exercícios incluem os pressupostos necessários.
523 minutos de estudo estimados
- Distinguir coerção, validação de domínio, ausência e null.
- Construir consultas com parâmetros e autorização por recurso.
- Aplicar verificação de palavras-passe e codificação de saída por contexto.
- Avaliar transações, idempotência e recuperação de efeitos externos.
- Separar sintaxe JSON, estrutura, identidade e regras de negócio sem coerções que percam dados.
- Diagnosticar exceções diferidas, acumulação de memória e propriedade de recursos em leitores incrementais.
- Validar contratos CSV e tratar escritas parciais com base nos bytes confirmados.
- Conserva os valores de cada operação e distingue execução SQL, dados recebidos e efeitos confirmados.
- Define quem confirma o trabalho e decide como tratar conflitos, falhas parciais e resultados desconhecidos.
- Transforma scripts em jobs com contratos claros para argumentos, limpeza, tentativas e resultados observáveis.
Módulos
- Tipos e comparações explícitas
- Arrays e funções com intenção
- Dados com parâmetros
- Segurança na fronteira web
- Transações e falhas parciais em PDO
- HTTP, sessões e autorização por recurso
- JSON, contratos e falhas explícitas
- Streams, CSV e importações controladas
- PDO: parâmetros, cursores e contratos de resultados
- Transações, concorrência e recuperação
- CLI: falhas, opções e ciclo de vida
Continua a aprender
Referências e versão
PHP 8.5 reference; DR PHP 2026.3; new fixtures executed on PHP 8.4.4 / SQLite 3.51.2
- PHP manual: Comparison operators · 2026-09-29
- PHP manual: Type declarations · 2026-09-29
- PHP manual: empty · 2026-09-29
- PHP manual: array_key_exists · 2026-09-29
- PHP manual: Arrays · 2026-09-29
- PHP manual: PDO prepared statements · 2026-09-29
- PHP manual: pdo.transactions · 2026-10-01
- PHP manual: htmlspecialchars · 2026-09-29
- PHP manual: password_hash · 2026-09-29
- PHP manual: password_verify · 2026-09-29
- PHP manual: password_needs_rehash · 2026-09-29
- PHP manual: Securing session settings · 2026-09-29
- PHP manual: session_regenerate_id · 2026-09-29
- PHP manual: Filter constants · 2026-09-29
- OWASP: Authorization · 2026-09-29
- OWASP: CSRF prevention · 2026-09-29
- OWASP: Error handling · 2026-09-29
- Transactional outbox pattern · 2026-09-29
- PHP supported versions · 2026-09-29
- PHP manual: json_decode · 2026-10-01
- PHP manual: json_encode · 2026-10-01
- PHP manual: array_is_list · 2026-10-01
- PHP manual: json_validate · 2026-10-01
- PHP manual: JSON constants · 2026-10-01
- PHP manual: language.exceptions · 2026-10-01
- PHP manual: Throwable · 2026-10-01
- PHP manual: fgetcsv · 2026-10-01
- PHP manual: fopen · 2026-10-01
- PHP manual: fgets · 2026-10-01
- PHP manual: fwrite · 2026-10-01
- PHP manual: Generators overview · 2026-10-01
- PHP manual: Generator syntax · 2026-10-01
- PHP manual: iterator_to_array · 2026-10-01
- PHP RFC: Generators · 2026-10-01
- PHP manual: pdostatement.bindparam · 2026-10-01
- PHP manual: pdostatement.bindvalue · 2026-10-01
- PHP manual: pdostatement.fetch · 2026-10-01
- PHP manual: pdostatement.fetchcolumn · 2026-10-01
- PHP manual: pdostatement.rowcount · 2026-10-01
- PHP manual: pdostatement.execute · 2026-10-01
- PHP manual: pdostatement.fetchall · 2026-10-01
- PHP manual: pdo.begintransaction · 2026-10-01
- PHP manual: pdo.rollback · 2026-10-01
- PHP manual: pdo.intransaction · 2026-10-01
- PHP manual: pdo.error-handling · 2026-10-01
- PHP manual: pdo.exec · 2026-10-01
- PHP manual: function.exit · 2026-10-01
- PHP manual: function.set-error-handler · 2026-10-01
- PHP manual: function.restore-error-handler · 2026-10-01
- PHP manual: function.getenv · 2026-10-01
- PHP manual: function.getopt · 2026-10-01
- PHP manual: function.hrtime · 2026-10-01
- PHP manual: function.flock · 2026-10-01
- SQLite: lang_savepoint · 2026-10-01
- SQLite: lang_transaction · 2026-10-01
- SQLite: foreignkeys · 2026-10-01
- SQLite: lang_conflict · 2026-10-01
O que vais explorar
0 / 11Tipos e comparações explícitas
Evita decisões inesperadas ao comparar dados externos.
Arrays e funções com intenção
Organiza dados e separa responsabilidades.
Dados com parâmetros
Mantém instruções SQL separadas dos valores recebidos.
Segurança na fronteira web
Trata palavras-passe, saída HTML e erros com cuidado.
Transações e falhas parciais em PDO
Agrupa alterações relacionadas e verifica os limites da transação.
HTTP, sessões e autorização por recurso
Protege ações e objetos, não apenas a página de entrada.
JSON, contratos e falhas explícitas
Separa sintaxe, estrutura e regras do endpoint; conserva identidade e torna os erros observáveis.
Streams, CSV e importações controladas
Lê registos progressivamente, valida o contrato do ficheiro e acompanha falhas durante o consumo e a escrita.
PDO: parâmetros, cursores e contratos de resultados
Conserva os valores de cada operação e distingue execução SQL, dados recebidos e efeitos confirmados.
Transações, concorrência e recuperação
Define quem confirma o trabalho e decide como tratar conflitos, falhas parciais e resultados desconhecidos.
CLI: falhas, opções e ciclo de vida
Transforma scripts em jobs com contratos claros para argumentos, limpeza, tentativas e resultados observáveis.