# Zend Framework

Zend Framework é um framework para aplicações Web de código aberto, orientado a objetos, implementado em PHP 5 e licenciado sob a New BSD License. Zend Framework—freqüentemente referido como ZF—é desenvolvido com o objetivo de simplificar o desenvolvimento web enquanto promove as melhores práticas na comunidade de desenvolvedores PHP.
A arquitetura use-a-vontade do ZF permite que os desenvolvedores reutilizem componentes quando e onde eles fizerem sentido em suas aplicações sem requerer outros componentes ZF além das dependências mínimas. Não há portanto nenhum paradigma ou padrão que todos os usuários Zend Framework devam seguir, embora ZF forneça componentes para os padrões de projeto MVC e Table Gateway que são usados na maioria das aplicações ZF. Zend Framework fornece componentes individuais para muitos outros requisitos comuns no desenvolvimento de aplicações web, incluindo autenticação e autorização via listas de controle de acesso (ACL), configuração de aplicações, data caching, filtragem/validação de dados fornecidos pelo usuário para segurança e integridade de dados, internacionalização, interfaces para funcionalidades AJAX, composição/entrega de email, indexação e consulta no formato de busca Apache Lucene, e todas as Google Data APIs com muitos outros web services populares. Por causa de seu projeto fracamente acoplado, os componentes ZF podem ser usados de modo relativamente ao lado de componentes de terceiros PHP web application frameworks.

## História e Filosofia

Zend Framework foi concebido no início de 2005 enquanto muitos novos frameworks, tais como Ruby on Rails e Spring Framework, estavam ganhando popularidade na comunidade web development. ZF foi publicamente anunciado pela primeira vez na Zend Conference. Ao mesmo tempo, nenhum framework amplamente usado tem sido disponibilizado para a comunidade PHP para preencher completamente necessidades de desenvolvimento web similares. Os projetistas do Zend Framework buscaram combinar características de uso final e rapid application development (RAD) desses novos frameworks com a simplicidade, abertura e praticidade do mundo real que é altamente valorizada na comunidade PHP.
Tipicamente, cenários de uso de desenvolvimento específicos são implementados usando componentes de softwares mais genéricos através de configuração automática e/ou geração de código. Nos https://web.archive.org/web/20080812044410/http://framework.zend.com/download/, a comunidade Zend Framework optou pelo desenvolvimento completo e teste desses componentes essenciais antes de começar a trabalhar na simplificação de tarefas de desenvolvimento tais como migrações de banco de dados, geração de scaffolding, e configuração e criação de projeto. Essa prática tem sido objeto de algumas críticas desde que algumas funcionalidades consideradas por muitos como necessárias para um release geral para frameworks de aplicação web modernos foram deixadas para futuros releases do Zend Framework. Muitos usuários ZF, entretanto, têm achado tais componentes de software geneŕicos mais reusáveis e extensíveis na implementação de suas aplicações. Zend Framework também procura promover as melhores práticas de desenvolvimento web na comunidade PHP; convenções não são tão comumente usadas no ZF como em muitos outros frameworks. Apropriadamente as sugestões são substituidas por padrões razoáveis de configuração que podem ser sobrescritos por cada requisito específico da aplicação ZF.

## Licenciamento

Zend Framework está licenciado sob Open Source Initiative(OSI)-approved New BSD License, e todos os contribuidores de código devem assinar um Contributor License Agreement (CLA) baseado no Apache Software Foundation’s CLA. O licenciamento e as políticas de contribuição foram estabelecidas para frustrar quaisquer questões de propriedade intelectual por usuários ZF comerciais.

## Patrocinador e parceiros

Zend Technologies, co-fundada pelos contribuidores do núcleo PHP Andi Gutmans e Zeev Suraski, é a patrocinadora corporativa do Zend Framework. Os parceiros tecnológicos incluem IBM, Google, Microsoft, e StrikeIron.

## Requisitos

Zend Framework requer PHP 5.1.4 ou superior, embora o Guia de Referência do Programador Zend Framework recomende PHP 5.2.4 ou superior por melhorias de segurança e desempenho incluídas entre essas versões de PHP. PHPUnit 3.0 ou superior é requerido para rodar os testes unitário embarcados com Zend Framework. Muitos componentes também requerem extensões PHP; uma lista completa de componentes e suas dependências pode ser encontrada no Guia de Referência do Programador.

## Releases

Os releases do Zend Framework são versionados com três números no formato x.y.z, onde uma mudança no x, y, ou z corresponde ao maior, menor e mini releases, respectivamente. O primeiro Disponibilidade Geral release do ZF foi lançado em 30/06/2007 como Zend Framework 1.0.

## Desenvolvimento atual

A primeira versão de desenvolvimento do Zend Framework 2.0 foi lançado em 6 de agosto de 2010. As alterações feitas neste lançamento foram a retirada das declarações require_once, a migração para os namespaces do PHP 5.3, uma suíte de testes refatorada, a reescrita do Zend\Session, e a adição do novo Zend\Stdlib. O lançamento da terceira versão de desenvolvimento foi em 14 de junho de 2011.
A primeira versão estável do Zend Framework 2.0 foi lançado em 5 de setembro de 2012.

## Características

* Todos os componentes são PHP 5 completamente orientados a objeto e tem conformidade com E STRICT
* Arquitetura "use à vontade" com fraco acoplamento de componentes e interdependências mínimas
* Implementação MVC extensível suportando layouts e templates baseados em PHP por padrão
* Implementação flexível de Table Gateway para acessar dados de um banco de dados relacional em um ambiente orientado a objetos
* Suporte para múltiplos sistemas de bancos de dados, incluindo MySQL, Oracle, IBM DB2, Microsoft SQL Server, PostgreSQL, SQLite, e Informix Dynamic Server
* Autenticação e autorização baseada em ACL usando uma variedade de sistemas de backend
* Filtro de dados e validação para fortalecimento da segurança da aplicação
* Gerenciamento de sessão
* Componente de configuração para promover um gerenciamento de configuração consistente através de Zend Framework e aplicações ZF
* Composição e entrega de email, recuperação via mbox, Maildir, POP3 e IMAP4
* Indexação e busca que suporta o formato de arquivo índice Apache Lucene
* Internationalização e localização
* Criação de formulários usando PHP, arquivos de configuração ou XML
* Tecnologias de Identity 2.0 tais como Microsoft InfoCard e OpenID
* Múltiplos formatos para web services, incluindo XML-RPC, REST, e Google GData.
* Subsistema de caching flexível com suporte para muitos tipos de backends, tais como memory ou um sistema de arquivos.
* Componente de logging simples inspirado por log4j
* Componente nativo PHP para leitura, atualização e criação de documentos PDF
* Serialização de estruturas de dados PHP para e de JSON de modo a facilitar o desenvolvimento AJAX
* API para consumir RSS e alimentadores Atom
* Bibliotecas cliente para muitos repositórios de web services, incluindo Amazon E-Commerce Service, Akismet, del.icio.us, Flickr, StrikeIron, Yahoo!, Audioscrobbler, e Simpy.

## Código, documentação, e padrões de teste

Contribuições de código para o Zend Framework são sujeitas a um código rigoroso, documentação, e padrões de teste. Todo código deve ir ao encontro dos padrões de codificação e os teste unitários devem alcançar 80% de cobertura de código antes que o código correspondente possa ser movido para a marca de release.