2010-08-11

Zend Framework 2.0 dev1

Собственно пока играюсь с новым ZF 2.0, основное изменение которого - Namespaces , а также рекращение обратной совместимости с предидущими версиями. Отныне php 5.3+.
Убраны все require, кроме класса Zend\Loader. Также первое, что бросается в глаза, это то что из корневой папки Zend были убраны почти все файлы, остались только самые базовые


  • Debug 
  • Exception
  • Loader
  • Registry
  • Version

Остальные все убраны на уровень ниже.
К примеру Zend_Form, теперь переименована в Zend\Form\Form. Но логика использования не поменялась:

$form = new Zend\Form\Form();
$form->addElement('text', 'username', array('label'=>'username'));
$form->addElement('text', 'password', array('label'=>'password'));
$form->addElement('submit', 'submit');


Часть компонентов переменована, причем достаточно сильно к примеру Zend_Auth, теперь Zend\Authentication\AuthenticationService, длиновато, но не критично зато более понято за что отвечает и что делает, хотя логка использования не поменялась

$auth = new Zend\Authentication\AuthenticationService();
$auth->setStorage(new Zend\Authentication\Storage\Session());
$auth->authenticate(new Zend\Authentication\Adapter\Digest(APPLICATION_PATH .'/configs/htaccess', 'realm', 'username', 'password'));


А для проверки,
$auth->hasIdentity();

Поменялась немного параметры инициализации DB из application.ini
Теперь это выглядит вот так

resources.db.adapter = "Pdo\Sqlite"
resources.db.params.dbname = APPLICATION_PATH "/../database/production.db"


Zend_Session отныне Zend\Session\SessionManager, но сразу с нативной поддрежкой конфигурации, стродажей и валидации сессии.

Но самое интерессное другое, новый компонент Zend\SignalSlot, лучше всего демонстрирует пример из тестов, хотя да, надо поигратся

$signals = new Zend\SignalSlot\Signals()
$signals->connect('string.transform', 'trim');
$signals->connect('string.transform', 'str_rot13');
$value = $signals->emit('string.transform', ' foo ');
$this->assertEquals(\str_rot13(' foo '), $value);


Тоесть мы получили аналог системы сигналов из симфони, да это притяно.

Да, самое приятное конечно другое, раньше меня всегда доставало и ужасало то то твоироль с папке tests , иммею ввиду, те тесты которые шли в пакете с ZendFramework. Отныне все решено, красивый единый конфиг в 1 месте, каждый тест отвечает только за себя, нет дурачких TestHelper , etc. другой дряни , красивая, а главное понятная структура тестов.

В общем меня это радует :)