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.
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
É 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.
É 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.
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.
all:
propel:class: sfPropelDatabase
param:dsn: mysql://root:@localhost/exemplo01
encoding: utf8propel.targetPackage = lib.model
propel.packageObjectModel = truepropel.project = sf_sandbox
propel.database = mysqlpropel.database.createUrl = mysql://root@localhost/
propel.database.url = mysql://root@localhost/exemplo01Agora é 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
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/contatoMódulo de telefone:
http://127.0.0.1/sf_sandbox/web/frontend_dev.php/telefoneMódulo de tipo
http://127.0.0.1/sf_sandbox/web/frontend_dev.php/tipoO 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.

Há alguns meses conheci o Symphony, mas nunca utilizei, depois desse artigo, vamos ver no que vai dar. ehehhehee
Só uma pergunta: Teria como você fazer um artigo depois mostrando como se usar o Symphony com o Doctrine (orm)?

E isso aew cara, exemplos simples para aqueleas que pretendem comecar com esse maravilhoso Frame! Vlw a iniciativa, Abraços!
Responder comentário
Júlio , você falou que ia continuar o Artigo sem usar o CRUD para a criação da interface gráfica...
Poderias continuar com ele , pois o artigo está Ótimo mas só falta saber como personalizar a interface super-simples criada pelo CRUD.

Júlio , você falou que ia continuar o Artigo sem usar o CRUD para a criação da interface gráfica...
Poderias continuar com ele , pois o artigo está Ótimo mas só falta saber como personalizar a interface super-simples criada pelo CRUD.
Os textos publicados neste espaço são de responsabilidade única de seus autores (colunistas e leitores) e podem não expressar necessariamente a opinião do iMasters.
Júlio César Martini atualmente presta serviços de WebMaster/Programador para o UOL (http://www.uol.com.br), Graduado em Tecnólogo em Informática pela UNIFIAN - Faculdades Anhanguera e Pós-Graduado em Desenvolvimento de Software para Web pela UFSCAR. Foi o primeiro profissional a chegar à marca de 100 artigos publicados no iMasters e trabalha com PHP desde 2000. Site: http://www.juliocesarmartini.com
2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.