sábado, 28 de agosto de 2010

Que venha o Zend 2.0

Olá pessoal,

Como desenvolvedor Zend Framework não posso mal posso esperar pela versão 2.0 deste framework.
Esta nova versão trará várias alterações como a utilização dos novos recursos do php 5.3 como namespaces e closures.
Recentemente ví que a versão de desenvolvimento já foi lançada
para quem quiser baixar a versão de desenvolvimento link é:



ZendFramework 2.0 Dev

foi lançada recentemente.


Hoje falarei de algumas mudanças com relação ao framework.

Construtor Unificado
Todas as classes do framework irão receber opcionalmente um array ou um Zend_Config. Isto permitirá uma maior flexibilidade para acrescentar mais um argumento na construção do objeto sem alterar sua assinatura, opcionalmente isto permite a utilização de Dependency Injection

Opções
No ZF 1.x existe uma falta de padronização quanto ao formato em que as chaves dos arrays devem ser passados nas configurações, alguns métodos esperam por palavras separadas por '_' (underscore), outras em notação 'cammelCase'. O objetivo é padronizar esta situação.

Exceptions
Cada componente do framework irá retornar uma exceção que utiliza uma Marker Interface

Design por Contrato
Várias partes do framework irão ser alteradas para utilizar este paradigma que trata-se de ter o design guiado pelas interfaces ao invez de classes abstratas, como por exemplo nos plugins do ZF 1.x, Atualmente ele recebe um Zend_Controller_Request_Abstract como parametro em uma série de métodos, na nova versão isto não irá acontecer no lugar de uma classe abstrata estes métodos receberão interfaces na assinatura

Eliminar a maioria dos singletons
O ZendFramework possui muitos singleTons que em alguns casos dificulta a extensão ou alteração de um comportamento do framework, o objetivo do ZF2 é eliminar onde for possível os singletons (duvido que retirem do Zend_Controller_Front) e onde não for possível adicionar o comportamento em objetos auxiliares que possam ser substituidos, com isto será um framework mais flexível.

Criação de componentes genéricos, e ações multi-funcionais
Existe uma série de componentes de código duplicado, eles serão jogados dentro de um componete discreto, onde os componentes originais poderão consumi-los. Alguns exemplos: Plugins/Helpers/Strategies (Atualmente em Zend_Controller_Front, Zend_Controller_Action_Helper, Zend_View (helpers e filters), Zend_Form (validators, filters, e decorators), etc.) Decorators (Atualmente em Zend_Form ;) Factories (Atualmente em Zend_Db, Zend_Navigation_Page, Zend_Auth, Zend_Translate, Zend_Cache, etc.) Caching (Atualmente em Zend_Translate, Zend_Locale, Zend_Queue, Zend_Paginator, Zend_Feed_Reader, Zend_Db_Table, etc.)

Utilização de novas funções da linguagem.
O PHP 5.3 oferece algumas alternativas que serão exploradas para os plugins, são elas: __invoke() e closures.

Somente autoload
Todo o framework irá utilizar o autoloading como padrão, isso irá diminuir alguns problemas de performance e simplicar muito códigos.

Namespaces.
Os Namespaces do PHP beneficia os frameworks e as bibliotecas mais que qualquer outra base de código e o Zend Framework pode se beneficiar muito dele. Mas tudo isso tem um custo, todo os códigos deverão ser reescritos para se beneficiar dele.

goto.
Goto sempre são considerados “ruins”, mas é inevitável na criação de máquina de estados finitas (Finite State Machines (FSM)) e parsers. O uso do goto será estudado caso-a-caso. Segundo a equipe, o componente Zend_Search_Lucene é um dos que mais será beneficiado com esse método,

Implementações MVC

Como a atual versão do MVC está gerando problemas no processo de requisição, uma proposta para seu aperfeiçoamento está sendo montada. Enquanto você pode conseguir algum desempenho adicional retirando as chamadas require_once e usando autoloading, o mais rápido dos pedidos ainda estão muito além de outros frameworks mais enxutos (CodeIgniter por ex.). Para resolver esse problema, a equipe está estudando e irá refatorar uma grande quantidade de códigos relacionadas a camada MVC.

Uma segunda olhada no MVC, seria relacionada as rotas de URL. Eles citam a Horde_Routes, que se tornou base nos projetos em python. Estão analizando se essa seria uma boa escolha de mudanças para esse caso.

Uma outra idéia seria transformar o Front Controller em uma maquina de estado (graças ao PHP 5.3 e o goto). Isso permitiria pulos dentro da aplicação que retiraria diversos loops e problemas.

Para mais informações a respeito da reestruturação do MVC:

http://framework.zend.com/wiki/display/ZFDEV2/Zend+Framework+2.0+Roadmap


Vou experimentar esta nova versão e posto o que achei no blog.

até +.

Nenhum comentário:

Postar um comentário