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