Убраны все 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 коментарів:
Спасибо за обзор, было интересно узнать, что нового будет в ZF2 в прикладном плане. У самого руки никак не доходят до того, чтобы поиграться с этим :)
Еще они грозились переписать MVC c использованием goto, с ним должен стать быстрым и простым...
Я некоторое время не общался с PHP и наверно уже не в курсе.
Зачем изменили нижний прочерк "_" на обратный слеш "\"?
Я такого ни в одном языке не видел. Для меня это менее очевидное название класса. С чем это связано?
@Detonator не за что у мя тоже, только вот стараюсь решил протестировать прототип одной идеи заодно реализовав на ZF2
@AntonShevchuk Грозились, но на текущий момент ничего такого нет, ни в обном файле инструкция GOTO не используется. Хотя визуально с нуля работает быстрее. Хотя корее всего из-за того что убрали require и оно банально грузит меньше для отображения страницы.
@ignar Все ноги растут из Namespaces http://ua.php.net/manual/en/language.namespaces.rationale.php . Изначально _ , использовалось вместо пространств имен в php, и соотвественно с реализацией в php 5.3 потребность в этом отпала
@Anton Shevchuk
Goto собираются использовать в Front Controller, когда реализуют его в виде конечного автомата (если все-таки реализуют). Но на данный момент Controller\Front отличается только наличием неймспейсов. Реализация та же.
Зато filters уже работают через __invoke в теле которого идет все тот-же вызов($this->filter($value)). Но все равно приятно. Ведь это только первый dev
@valeriy
А зачем он там? И GOTO и автомат. Где почитать?
@Станислав
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
Введение в ZF2 http://plutov.by/post/zf2_introduction
Дописати коментар