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. другой дряни , красивая, а главное понятная структура тестов.

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

8 коментарів:

Detonator сказав...

Спасибо за обзор, было интересно узнать, что нового будет в ZF2 в прикладном плане. У самого руки никак не доходят до того, чтобы поиграться с этим :)

Anton Shevchuk сказав...

Еще они грозились переписать MVC c использованием goto, с ним должен стать быстрым и простым...

ignar сказав...

Я некоторое время не общался с PHP и наверно уже не в курсе.

Зачем изменили нижний прочерк "_" на обратный слеш "\"?

Я такого ни в одном языке не видел. Для меня это менее очевидное название класса. С чем это связано?

Necromant2005 сказав...

@Detonator не за что у мя тоже, только вот стараюсь решил протестировать прототип одной идеи заодно реализовав на ZF2

@AntonShevchuk Грозились, но на текущий момент ничего такого нет, ни в обном файле инструкция GOTO не используется. Хотя визуально с нуля работает быстрее. Хотя корее всего из-за того что убрали require и оно банально грузит меньше для отображения страницы.

@ignar Все ноги растут из Namespaces http://ua.php.net/manual/en/language.namespaces.rationale.php . Изначально _ , использовалось вместо пространств имен в php, и соотвественно с реализацией в php 5.3 потребность в этом отпала

valeriy сказав...

@Anton Shevchuk
Goto собираются использовать в Front Controller, когда реализуют его в виде конечного автомата (если все-таки реализуют). Но на данный момент Controller\Front отличается только наличием неймспейсов. Реализация та же.

Зато filters уже работают через __invoke в теле которого идет все тот-же вызов($this->filter($value)). Но все равно приятно. Ведь это только первый dev

Станислав сказав...

@valeriy
А зачем он там? И GOTO и автомат. Где почитать?

Necromant2005 сказав...

@Станислав
goto. Goto is often considered "evil," but is invaluable when creating Finite State Machines (FSM) and parsers; usage of goto will be evaluated on a case-by-case basis. Some examples of components that could potentially benefit from such an implementation include Zend_Search_Lucene (which already implements a FSM), the MVC (more below), Zend_Ical, and Zend_Markup (though not all of these may make use of it).

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

alexander.plutov сказав...

Введение в ZF2 http://plutov.by/post/zf2_introduction