Documentação do Symfony - versão 3.1
Renderizada do repositório symfony-docs-pt-BR no Github
O Symfony é um conjunto reutilizável de componentes PHP coesivos, independentes e desacoplados que solucionam os problemas comuns do desenvolvimento web.
Em vez de usar esses componentes de baixo nível, você pode utilizar o framework web full-stack Symfony2, pronto para uso, que utiliza esses componentes como base... ou você pode criar o seu próprio framework. Esta série é sobre esse último assunto.
Em primeiro lugar, porque você gostaria de criar o seu próprio framework? Se você olhar em volta, todos vão dizer que é algo ruim reinventar a roda, e, que é melhor você escolher um framework existente e esquecer completamente de criar o seu próprio. Na maioria das vezes, eles estão certos, mas existem algumas boas razões para você começar a criar o seu próprio framework:
Esse tutorial irá guiá-lo através da criação de um framework web, um passo de cada vez. Em cada etapa, você terá um framework totalmente funcional que já poderá utilizá-lo, ou, então, usar como ponto de partida para o seu próprio. Começaremos com um framework simples e, com o tempo, mais recursos serão adicionados. Eventualmente, você terá um framework web full-stack com recursos completos.
E, claro, cada passo será a ocasião para aprender mais sobre alguns dos Componentes do Symfony2.
Tip
Se você não tem tempo para ler todo o livro, ou se você deseja obter um início rápido, também pode olhar o Silex, um micro-framework que possui como base os Componentes do Symfony2. O código é bastante enxuto e aproveita muitos aspectos dos Componentes do Symfony2.
Muitos frameworks web modernos anunciam-se como sendo frameworks MVC. Esse tutorial não irá falar sobre o padrão MVC, pois os Componentes do Symfony2 são capazes de criar qualquer tipo de frameworks, não apenas os que seguem a arquitetura MVC. Enfim, se você olhar através da semântica MVC, esta série é sobre como criar a parte do Controlador de um framework. Para o Modelo e a Visão, realmente vai depender da sua preferência pessoal e você pode utilizar qualquer uma das bibliotecas existentes de terceiros (Doctrine, Propel, ou apenas o PDO para o Modelo; e PHP ou Twig para a Visão).
Ao criar um framework, seguir o padrão MVC não é a forma correta. O objetivo principal deve ser a Separação de Responsabilidades (Separation of Concerns, em inglês); esse é provavelmente é o único padrão de projeto que você deve realmente se preocupar. Os princípios fundamentais dos Componentes do Symfony2 estão centrados na especificação HTTP. Como tal, o framework que vamos criar deve ser mais precisamente rotulados como um framework HTTP ou framework Request/Response.
Ler sobre como criar um framework não é suficiente. Você terá que acompanhar juntamente, digitando todos os exemplos incluídos nesse tutorial. Para isso, você precisa de uma versão recente do PHP (5.3.9 ou posterior é suficiente), um servidor web (como o Apache, Nginx ou o servidor web embutido do PHP), um bom conhecimento de PHP e uma compreensão de programação Orientada a Objeto.
Pronto? Vamos começar!
Antes de sequer pensar em criar o primeiro framework, você precisa pensar sobre algumas convenções: onde irá armazenar o código, como irá nomear as classes, como irá referenciar as dependências externas, etc.
Para armazenar seu novo framework, crie um diretório em algum lugar na sua máquina:
1 2 | $ mkdir framework
$ cd framework
|
Em vez de criar nosso framework a partir do zero, vamos escrever a mesma “aplicação” repetidamente, adicionando uma abstração de cada vez. Vamos iniciar com a aplicação web mais simples que podemos pensar em PHP:
// framework/index.php
$input = $_GET['name'];
printf('Hello %s', $input);
Se você tem o PHP 5.4, pode usar o servidor embutido do PHP para testar essa
aplicação no navegador (http://localhost:4321/index.php?name=Fabien
).
Caso contrário, utilize o seu próprio servidor (Apache, Nginx, etc.):
1 | $ php -S 127.0.0.1:4321
|
No próximo capítulo, vamos apresentar o Componente HttpFoundation e ver o que ele nos traz.