Avalon
2019
Framework PHP MVC criado do zero para aprendizado pessoal: entender por baixo dos panos como frameworks de mercado, como Laravel e Symfony, resolvem seus problemas, reimplementando cada peça na prática.
Aberto no GitHub. Uso em produção não recomendado, por design.
Contexto
O Avalon nasceu com intenção declaradamente educacional: implementar na prática design patterns, conceitos de arquitetura de aplicação e boas práticas de desenvolvimento. A regra do jogo era não usar nenhuma biblioteca de terceiros: cada funcionalidade é reimplementada do zero para entender o porquê das escolhas que os frameworks de mercado fazem.
A principal referência foi o catálogo Patterns of Enterprise Application Architecture (PoEAA), de Martin Fowler: os padrões eram estudados no catálogo e então implementados no framework, com a estrutura do código nomeando cada conceito explicitamente.
Funcionalidades
O núcleo cobre o ciclo completo de uma aplicação MVC: Request e Response, Router, tratamento de erros e exceções, helpers, configuração via arquivo .env, ORM com Query Builder e drivers para MySQL e MSSQL, template engine própria, Collections, comandos de CLI e até um framework de testes próprio. O container de injeção de dependências ficou de fora, uma pendência conhecida.
Por dentro
Na camada de dados, o ORM implementa lado a lado os dois padrões clássicos de mapeamento objeto-relacional do PoEAA, Active Record e Data Mapper (este com Data Access Objects e Data Transfer Objects), além de Repository e um Query Builder com dialetos MySQL e MSSQL, montado sobre operações e cláusulas componíveis (Select, Insert, Update, Delete; Where, Join, Limit). Na entrada, um Front Controller com Router sobre Request e Response.
Status
O Avalon foi criado apenas com propósito de aprendizado e não deve ser usado em produção. O exercício de reimplementar roteamento, ORM e template engine deixa muito mais claras as decisões de frameworks como Laravel e Symfony.