Development

sfBookPT-brIntroduction

You must first sign up to be able to contribute.

Version 13 (modified by hpoyatos, 11 years ago)
--

Introdução

Resumo

Symfony é um framework em PHP5, orientado à objetos em um modelo MVC. Symfony permite a separação das regras de negócio, lógica de programação e telas de apresentação de uma aplicação web. Ele ainda contém inúmeras ferramentas e classes concebidas para reduzir o tempo de desenvolvimento de uma aplicação web complexa.

O que é um framework?

Um framework insere novos mecanismos no topo de uma linguagem de programação, e estes mecanismos automatizam muitos dos padrões de desenvolvimento usados para um dado propósito. Um framework também estrutura os códigos, incentivando o programador a escrever um código melhor, mais legível e de fácil manutenção. Um framework também torna a programação mais simples, uma vez que seus pacotes transformam operações complexas em constatações simples.

Um framework é normalmente desenvolvido com o mesmo código que ele extende. Um framework PHP5 é um conjunto de arquivos escritos em PHP5.

Um framework inserir conceito de camadas a uma aplicação. Em geral, ele divide aplicações em três camadas:

  • A lógica de apresentação trata das interações entre o usuário e o software
  • A lógica de fonte de dados trabalha com o acesso ao banco de dados ou outros provedores de informação (como webservices)
  • A lógica de domínio, ou lógica de negócio, é a porção restante. Ela envolve algoritmos feitos em cima da entrada de dados, manipulação dos dados para apresentação, e disparando rotinas na camada de lógica de fonte de dados de acordo com os comandos recebidos da apresentação.

Frameworks de aplicações Web se propõem a facilitar o desenvolvimento de... aplicações web (websites, Intranets, etc.). Contruir um website dinâmico básico pode ser feito facilmente com as linguagens de programação existentes, e o PHP é conhecido por sua simplicidade e amplamente adotado por isso. Utilizando apenas PHP, você pode realizar consultas em banco de dados, gerenciar cookies de sessão, acessar arquivos em um servidor, etc. Mas quando se é necessário construir um website mais complexo, onde regras de negócio aumentam o volume de código a ser mantido, a necessidade de um framework de aplicações web é justificada.

O que é o symfony?

Symfony é um framework completo desenvolvido para ajudar e aumentar a produtividade no desenvolvimento de aplicações web.

Ele é baseado nos seguintes conceitos:

  • compatível com o maior número de ambientes possível
  • fácil de instalar e configurar
  • fácil de aprender
  • pronto para projetos de grande porte
  • convenções até certo ponto configuráveis, suportando chamadas do tipo fallback
  • simples na maioria dos casos, mas ainda sim flexível o bastante para se adaptar em casos complexos
  • contempla as funcionalidades web mais comuns
  • compatível com a maioria das "boas práticas" da web e "design patterns" web
  • código legível e de fácil manutenção
  • código aberto (open source)

O conceito principal do framework symfony é que as tarefas mais comuns são realizadas automaticamente para que o desenvolvedor possa focar-se inteiramente nas especificações da aplicação. Não há necessidade de se reinventar a roda toda vez que uma nova aplicação web é contruída.

Para preencher estes requisitos, symfony foi inteiramente escrito em PHP5. Foi minuciosamente testado em diversos projetos reais, e está sendo utilizado atualmente por websites de e-business de grande escala e demanda. Ele é compatível com a maioria dos banco de dados disponíveis, entre eles:

  • MySQL
  • PostgreSQL
  • Oracle
  • Microsoft SQL Server (MSSQL)
  • e qualquer outro banco de dados que possuir um driver Creole

O modelo de objetos do symfony é baseado em três camadas distintas:

  • uma abstração de banco de dados
  • um mapeamento objeto-relacional
  • um modelo Model-View-Controller para front e back-office

Funcionalidades comuns em projetos web são implementadas facilmente, Symfony nativamente as automatiza:

  • internationalização (i18n)
  • templates com ajuda (help)
  • validação de formulários
  • gerencialmento de cache
  • gerenciamento de carrinho de compras
  • URLs customizáveis
  • "andaime" (scaffolding)
  • envio de emails
  • paginação
  • interações AJAX

Adicionalmente, para preencher os requisitos de grandes empresas que possuem suas próprios padrões de codificação e regras de gerenciamento de projetos, symfony pode ser inteiramente reconfigurado utilizando arquivos de configuração YAML. Eles provem por padrão diversos ambientes de desenvolvimento, atendidos plenamente por ferramentas que facilmente realizam as seguintes operações:

  • protótipos
  • gerenciamento de conteúdo
  • mudanças de configuração em tempo real
  • deployment
  • unidade de testes
  • testes de aplicatividade (applicative testing)
  • logging (logar, registrar log)
  • debugging

Symfony utiliza alguns fragmentos de código de outros projetos open source:

  • Creole, para camada de abstração de banco de dados
  • Propel, para camada de mapeamento objeto-relacional
  • Mojavi, para camada de modelo Model-View-Controller

Symfony é feito para mim?

Se você é um expert em PHP5 ou um iniciante em programação de aplicativos web realmente não interessa. O fator determinante que deve orientar sua decisão é na verdade o tamanho de seu projeto.

Se você deseja desenvolver um website simples com cinco a dez páginas, ter acesso limitado a um banco de dados e não tem preocupação especial com performance, disponibilidade ou documentação, então você deveria permanecer utilizando apenas PHP. Você não faria muito proveito das vantagens das funcionalidades de um framework de aplicações web, e utilizar orientação à objetos ou um modelo MVC apenas tornaria seu desenvolvimento mais lento. Symfony não é otimizado para rodar eficientemente em um servidor compartilhado com apenas suporte CGI.

Por outro lado, se você desenvolve aplicações web cada vez maiores, com pesadas regras de negócio, utilizar PHP apenas não é o bastante. Se você planeja manter ou extender sua aplicação no futuro, precisará que seu código seja leve, legível e tenha performance. Se você deseja fazer uso das últimas novidades em interações com o usuário (como AJAX, por exemplo) de uma maneira intuitiva, você não pode simplesmente escrever milhares de linhas de código Javascript. Se você gosta de se divertir codificando e desenvolver de maneira veloz, então utilizar apenas PHP provavelmente será desapontador. Por todas estas razões, symfony foi feito pra você.

E claro, se você for um desenvolvedor web professional, você provavelmente já conhece todos os benefícios de frameworks de aplicação web, e precise de um que é maduro, bem documentado, e com uma grande comunidade. Não procure mais, porque o symfony é a solução que você procurava.