O Symfony é um framework para aplicações web em PHP5, que implementa o padrão MVC, tornando possível a criação de aplicações PHP em três camadas.
Para vocês terem uma idéia do poder do symfony, o Yahoo Bookmarks (bookmarks.yahoo.com), com mais de 20 milhões de usuários, é uma aplicação que faz uso desse framework.
Nesse artigo, apresentarei o passo-a-passo de 02 tipos de instalação do framework e um exemplo básico de sua utilização.
Requisitos:
Versão do framework utilizada: 1.0.18 (http://www.symfony-project.org/
IDE utilizada: Eclipse PDT (http://www.eclipse.org/pdt/)
Banco de dados: MySQL (http://www.mysql.com)
Modelagem: MySQL Workbench (http://dev.mysql.com/workbench/)
Gerenciador do banco de dados: HeidiSQL (http://www.heidisql.com/)
site do symfony
Instalação utilizando Sandbox
É um projeto symfony vazio onde todas as bibliotecas necessárias já estão incluídas, e toda a configuração básica já está pronta. Não é necessário instalar nada. Útil apenas para testes. A desvantagem é a dificuldade de se atualizar a versão do symfony caso precise.
- Acesse a url: http://www.symfony-project.org/installation/1_0, selecione um dos tipos disponíveis: tgz ou zip;
- Descompacte na pasta do seu servidor web.
Instalação via PEAR
É recomendada para aqueles que desejam rodar diversos projetos baseados em symfony, com uma forma fácil de atualizá-lo. Necessita do PEAR versão 1.4.0 ou acima.
- Na linha de comando, adicione o canal do symfony ao PEAR: pear channel-discover pear.symfony-project.com
- Instale a versão 1.0: pear install symfony/symfony-1.0.18
Exemplo básico:
Como exemplo, criaremos um cadastro de contatos. Esse contato poderá ter 0 ou N telefones. A tabela tipo será responsável pelo cadastro dos tipos de telefone: Residencial, Celular, Comercial etc… Para modelar utilizaremos o MySQL Workbench. Não ensinarei como modelar, já que o propósito do artigo não é esse. Abaixo, temos o resultado final da modelagem.
Modelagem MySQL Workbench
Após a modelagem pelo MySQL Workbench podemos gerar o script de criação das tabelas. Para isso, acesse a opção: FILE / EXPORT / FORWARD ENGINEER TO SQL SCRIPT, selecione o caminho onde será gerado e clique em FINISH.
Script para criação do database e tabelas
Utilizando o HeidiSQL vamos rodar o script que o MySQL Workbench gerou. Esse script criará o database e as tabelas no mysql. Na aba QUERY, abra o arquivo e execute-o.
HeidiSQL
Agora vamos começar a “brincar” com o symfony. Utilizando o sandbox vá até a pasta do servidor web/sf_sandbox e digite o comando: symfony ( será exibido uma lista com todos os comandos disponíveis).
Comandos do symfony
Próximo passo será criar o arquivo schema.yml. Ele irá ler o database que criamos acima e realizar o mapeamento objeto-relacional. Mas antes de rodar o comando, precisamos alterar 02 arquivos: databases.yml e propel.ini informando o banco de dados utilizado, o usuário e a senha de acesso. Os dados que estou utilizando são: usuário = root, senha = (vazia), database= exemplo01. Caso esteja utilizando algo diferente, faça as alterações necessárias.
Arquivo: sf_sandbox/config/databases.yml
all:
propel:
class: sfPropelDatabase
param:
dsn: mysql://root:@localhost/exemplo01
encoding: utf8
Arquivo: sf_sandbox/config/propel.ini
propel.targetPackage = lib.model
propel.packageObjectModel = true
propel.project = sf_sandbox
propel.database = mysql
propel.database.createUrl = mysql://root@localhost/
propel.database.url = mysql://root@localhost/exemplo01
Atenção:
Agora é só rodar o comando: symfony propel-build-schema
Para ver o resultado, é só abrir o arquivo schema.yml dentro da pasta config do sf_sandbox.
schema.yml
Para gerar os modelos, digite o comando: symfony propel-build-model;
Após gerar os modelos é só gerar os CRUDS de cada módulo:
– symfony propel-generate-crud frontend contato Contato
– symfony propel-generate-crud frontend telefone Telefone
– symfony propel-generate-crud frontend tipo Tipo
Atenção:
Sobre os parâmetros: frontend é o nome da nossa aplicação (não confundir com o nome do projeto). No sf_sandbox é frontend. Para conferir basta acessar a pasta: sf_sandbox\apps, mas nada impede de criar outras apps, mas isso não faz parte desse artigo. Deixaremos para o próximo. O outro parâmetro é o nome do módulo a ser criado e o outro se refere a classe que o módulo se baseará.
Crud
Se tudo ocorreu bem, basta acessar o seguinte endereço em seu browser favorito:
Módulo de contato:
http://127.0.0.1/sf_sandbox/web/frontend_dev.php/contato
Módulo de telefone:
http://127.0.0.1/sf_sandbox/web/frontend_dev.php/telefone
Módulo de tipo
http://127.0.0.1/sf_sandbox/web/frontend_dev.php/tipo
O layout final não é muito amigável e pouco intuitivo, mas espero que com esse artigo eu possa ter passado uma pequena visão do symfony. Nos próximos artigos, vou utilizar esse mesmo projeto, mas não utilizaremos o comando de CRUD para geração das telas.
Download dos scripts do artigo
Opinem, deixem suas sugestões, afinal a coluna é de vocês.