# Aplicativos em PHP/FrameWorks/Symfony

Predefinição:Info/Software
Symfony é um framework web escrito em PHP que segue o paradigma MVC (model-view-controller). Disponível sob a Licença MIT, Symfony é um Software livre.
Os criadores do Symfony afirmam que a curva de aprendizagem necessária para seu uso proficiente está reduzida a menos de um dia. Ele é projetado para permitir que os desenvolvedores apliquem princípios ágeis do desenvolvimento (tais como DRY, KISS ou XP) e foquem na regras de negócio sem necessitar escrever muitos arquivos de configuração XML, comuns nos frameworks atuais.
Symfony ainda tem como objetivo construir aplicações robustas em contexto empresarial, e dar aos desenvolvedores controle total sobre a configuração: da estrutura de diretórios às bibliotecas externas, quase tudo pode ser personalizado. Para atingir os guidelines de desenvolvimento das empresas, o framework é empacotado com ferramentas adicionais para ajudar os desenvolvedores nos testes, depuração e documentação dos projetos.
Symfony é usado pelo serviço de perguntas e respostas Askeet e por muito mais aplicações, incluindo o Yahoo Bookmarks, aplicação com mais de 20 milhões de usuários.

## Leitura recomendada

* Potencier, Fabien and Zaninotto, François. (2007). The Definitive Guide to Symfony. Apress. ISBN 1590597869.

## Ligações externas

* Symfony Project - Site oficial do projeto.
* Symfony Brasil - Site da comunidade brasileira.
* symfony-pt - Lista de discussão da comunidade brasileira.

## 24 Tutoriais do Symfony

Ótimos tutoriais. O do dia 1 está traduzido também para português.
http://www.symfony-project.com/askeet
Link para o PDF de todos os tutoriais - http://www.symfony-project.com/downloads/askeet/askeet.pdf
O Download do Projeto resultante dos 24 tutoriais - http://www.symfony-project.com/downloads/askeet_release_1_0.tgz

## Learn symfony: a Beginner's Tutorial

http://www.sitepoint.com/print/symfony-beginners-tutorial
Código fonte do tutorial - http://www.sitepoint.com/examples/symfony/sandbox_final.tgz

## How to setup a symfony project in Trustudio or PHPEclipse

http://trac.symfony-project.com/trac/wiki/SymfonyWithEclipseBasedEditors

## Meu primeiro projeto com Symfony

Resumo do tutorial "My first symfony project" do site oficial.
- Certifique-se de que está usando PHP5
- Ative o suporte a SQLite no php.ini, descomentando a "extensão extension=php_sqlite.dll"
- Fazer o download do sf_sandbox de http://www.symfony-project.com/get/sf_sandbox.tgz e descompactar no diretório web
- Abra no navegador http://localhost/sf_sandbox/web/index.php para testar.
- Inicializar o modelo de dados:
Edite o script sf_sandbox/config/schema.yml e cole as linhas abaixo
propel:
Caso queira traduzir, fique à vontade com exceção de created_at.
Este script define a estrutura de duas tabelas que serão criadas com o SGBD SQLite.
Obs.: Para facilitar adicione o diretório do seu PHP ao path.
Obs2.: Se usando o Xampp 1.6.2 e receber mensagens de erro ao executar o comando php, então comente a linha com a extensão ";extension=php_svn.dll" no arquivo xampp\php\php.ini.
Salve o arquivo e abra o prompt de comando no diretório sf_sandbox e execute:
php symfony propel-build-model
Esteja certo de estar no raiz do diretório "sf_sandbox". Este comando criará algumas classes no diretório sf_sandbox/lib/model. Estas classes permitem acesso ao banco sem se digitar uma linha de código SQL. Symfony usará a biblioteca Propel para isso. Chamaremos estes objetos de model.
Agora entre o seguinte comando:
php symfony propel-build-sql
Um arquivo lib.model.schema.sql será criado em sf_sandbox/data/sql/. Podemos criar um banco em outro SGBD mas por default o projeto sf_sandbox deve usar o arquivo sandbox.db em sf_sandbox/data.
Para criar a estrutura das tabelas baseadas no arquivo SQL, entre:
php symfony propel-insert-sql
Criando a Aplicação
O symfony agora criará uma estrutura básica de um CRUD da aplicação que poderá ser customizado.
php symfony propel-generate-crud frontend post Post php symfony propel-generate-crud frontend comment Comment php symfony clear-cache
Agora temos dois módulos (pos e comment) que permitirão que você manipule os objetos das classes Post e Comment. Um módulo geralmente representa uma página ou um grupo de páginas com uso similar. Seus novos módulos estão localizados em sf_sandbox/apps/frontend/modules/ e podem ser acessados através das URLs:
http://localhost/sf_sandbox/web/frontend_dev.php/post
http://localhost/sf_sandbox/web/frontend_dev.php/comment
Veja que não digitamos nenhuma linha de código PHP, nem SQL nem sequer trabalhamos com SGBD.
Claro que aqui tem somente o esqueleto mas mesmo assim a ferramenta já nos deu ganho de produtividade.