PHP é uma
linguagem de script orientada a objetos simples e poderosa que tem o poder de atrair tanto desenvolvedores iniciantes quanto desenvolvedores experientes. Construir aplicações com o paradigma
OO permite que você crie um código com uma divisão mais lógica, mais fácil de manter e possível de reaproveitar.
Com o lançamento do
PHP5, o suporte que esta linguagem oferece à programação OO ficou mais completo e vários frameworks sugiram para facilitar a resolução dos problemas mais comuns dos desenvolvedores web, como: controle de acesso, layout das páginas, acesso ao banco de dados e etc.
O
Zend Framework e o
Doctrine são dois exemplos. O Zend Framework é bastante completo e permite que aplicações sejam desenvolvidas implementando um padrão de projeto conhecido como
MVC. O MVC contribui para tornar o código orientado a objetos ainda mais organizado separando aquilo que é lógica do negócio da apresentação e centralizando as solicitações dos clientes nos controllers.
O Zend Framework é muito legal. Mas existe algo fundamental que ele não possui: uma ferramenta de
ORM. ORM significa Mapeamento Objeto-Relacional e uma ferramenta de ORM é importante quando se desenvolve aplicações OO porque, no final das contas, alguns dos objetos criados precisam ser gravados e recuperados de uma base de dados que, na maioria das vezes, utiliza o
MER - Modelo Entidade-Relacionamento -, algo diferente do paradigma OO.
O paradigma OO funciona muito bem para a lógica do negócio, mas quando o assunto é banco de dados, o modelo mais interessante continua sendo o bom, velho e consagrado MER. Por isso, o mais inteligente a fazer quando se desenvolve aplicações complexas é usar tanto o paradigma OO quanto o MER. Ou seja, ambos precisam trabalhar juntos para construir uma aplicação que usa o melhor dos dois mundos.
Isso significa que em algum momento dentro da arquitetura da sua aplicação alguém deve fazer esta integração entre o paradigma OO e o MER. E acredite: fazer esta integração é uma tarefa complexa, chata, cansativa e desnecessária! Sim! Desnecessária! Isso porque alguém já fez esse trabalho para você construindo a tal ferramenta ORM.
A ferramenta ORM é responsável por unir os dois paradigmas, OO e ER. No mundo JAVA, existe uma ferramenta ORM muito popular conhecida como
Hibernate. No mundo PHP, depois de muito pesquisar, escolhemos o Doctrine como ferramenta de ORM.
Ou seja, PHP possui aquilo que é necessário para desenvolver aplicações complexas sem ter que sair reinventando a roda. Agora, é só juntar tudo isso para facilitar a construção de aplicações complexas! Mas só?
Na verdade, essa tarefa não é assim tão fácil. Mesmo depois de dominar ambos os frameworks (ZendFramework e Doctrine) muito deverá ser feito até você poder dizer, no final das contas, que tem uma Arquitetura que integra ambas as ferramentas e dá suporte para construção de sites complexos.
Ou seja, embora as ferramentas existam para download, ainda há um grande degrau que dificulta a sua utilização. E esse degrau é o degrau da integração e especialização dessas ferramentas com o objetivo de construir
TODA uma ARQUITETURA que dê suporte ao DESENVOLVIMENTO de sites COMPLEXOS utilizando PHP.
É aí que entra o
SeptoFramework. O SeptoFramework além de integrar o ZendFramework com o Doctrine é também a materialização de toda uma Arquitetura e um Processo Produtivo, pois também propõe um ciclo de desenvolvimento que pode ser especializado de acordo com a necessidade da sua organização.
Com o SeptoFramework, seu time se beneficia com as vantagens da utilização do MVC e do ORM através do Zend Framework e do Doctrine evitando que você seja obrigado a desenvolver frameworks internos para resolver os problemas mais comuns.
O SeptoFramework também foi desenvolvido pensando em permitir um gerenciamento de projeto mais afiado. Ele utiliza uma
arquitetura de três camadas: uma responsável pela apresentação, outra pela lógica e a última pelos dados.
Com uma arquitetura assim, é possível que times diferentes desenvolvam e mantenham partes específicas da aplicação, permitindo uma divisão de esforços mais racional e impedindo que o upgrade ou substituição de uma camada exija alterações em todo o sistema.