MOJ: Meu PHP MVC Framework

Moj uma alternativa de PHP MVC Framework

Passei as duas últimas semanas tentando descobrir qual era o PHP MVC framework mais adequado para meus novos projetos. Entre eles: CakePHP, CodeIgniter, Zend, Symfony, o novo e badalado Laravel e muitos outros… Mas cada um deles tem um ou outro detalhe que não me agrada: difícil instalação (não sou fã do Composer), re-implementação desnecessária de métodos nativos do php, queries SQL com péssima performance, muitas convenções para decorar, etc.

Então eu decidi escrever o meu próprio PHP MVC Framework: Moj
Eu não sei essa foi uma boa decisão (provavelmente não já que estou re-inventando a roda), mas agora estou extremamente satisfeito codificando no meu próprio framework, onde eu entendo absolutamente tudo e preciso me preocupar somente com aquilo que me importa (ao invés de tentar descobrir segredos e detalhes de outros frameworks).

Desenvolvimento do Moj

Em algumas poucas horas eu escrevi o esqueleto. Depois disso, baixei a versão crua do HTML5 boilerplate e juntei ao que já havia programado. Por ora estou com o que estou chamando de PHP Boilerplate, exatamente como eu queria (inclusive consegui registrar o domínio www.phpboilerplate.com).

Não pretendo deixar o Moj maior do que já está. Meu objetivo é mantê-lo muito simples, leve, de rápida execução e fácil de aprender, instalar e usar. Mas isso não significa que eu não vá estender as funcionalidades disponíveis. Pretendo re-aproveitar o máximo de código que puder, mas através da criação de módulos que serão completamente independentes. O core está praticamente pronto (talvez ainda precise corrigir bugs, fazer pequenas melhorias ou implementar funcionalidades que ainda não tenha sentido necessidade). A versão beta está disponível no github: https://github.com/leomuniz/moj.

Moj Google Pagespeed Result

O esqueleto que desenvolvi marcou 95/100 no teste do Google Pagespeed Insights. Esse valor é maior que a própria home do Google. É claro que, independentemente do PHP MVC Framework que você utilizar, será muito difícil manter esse número em um site completo (existem muitos detalhes que comprometem o desempenho, como compressão de imagens, JS e CSS bloqueando execução, priorizar conteúdo visível, etc). Mas acredito que esse seja um ótimo ponto de partida para um site com boa performance (visto que várias melhorias já estão implementadas “de fábrica” – como, por exemplo, a compressão gzip através do .htaccess).

Próximos passos:

- Criar uma versão com o Twitter Bootstrap integrado.
- Criar módulos comuns que possam ser utilizdos como plugins (controller de cadastro, Google e Facebook login, integração com Paypal, upload de arquivos, paginação e outras funcionalidades comuns que ajudem a acelerar o processo de desenvolvimento).
- Integrar com o SASS (que eu ainda preciso aprender)
- Desenvolver um sistema de cache para possibilitar o uso do Moj em grandes sites
- Criar um instalador para configurar o Moj na primeira vez que acessá-lo (similar ao do WordPress).
- Criar uma interface visual para automatizar as tarefas mais comuns: criação de models básicos, interface de CRUD, processo completo de deploy (com minificação de Javascript, CSS e HTML, possibilidade de fallback, entre outros), etc.

O Moj é um PHP MVC Framework free e open-source. Será uma honra se alguém usá-lo ou me ajudar no desenvolvimento fazendo sugestões de codificação, performance ou qualquer outra coisa. Nos próximos posts vou explicar como utilizar o Moj e estarei sempre disponível para ajudar qualquer pessoa que decidir utilizá-lo.

Tags

2 Comentários

  • Denis Carvalho disse:

    Curti. Eu também criei meu próprio mvc. Vou baixar o seu pra ver como é.
    Vamos trocando idéia por email. Abraços.

    • Leo Muniz disse:

      Legal, Denis.
      Você disponibilizou o código em algum lugar?

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>