Куда же ведут неисповедимые пути разработчика? ))
В этой статье хотелось рассмотреть историю весьма популярного продукта Zend Framework всех версий, 1, 2 и 3 версии. Одна из причина, признаюсь честно, некоторое недопонимание разработчиков этой компании.
Zend Framework 1 - и с чего все начиналось
С Zend Framework 1 я познакомился очень давно - примерно в 2010 году. И на тот момент считал, что это просто космос. Тогда еще даже не использовал его полностью, а только некоторые компоненты:
Мне приходилось работать с двумя СУБД - MySQL и MsSQL, а также иногда заполнять базу SQLite. Это было действительно удобно. Чуть позже начал пользоваться всей палитрой включая MVC-компоненты. Безусловно мнения могут быть разными, и даже сам вначале к некоторым вещам привыкал долго, но в целом, все сделано умно. Может где-то и избыточно, но определенно умно.
Вот небольшой всем знакомый кусочек кода контроллера, который думаю многим сэкономил жизнь и кучу нервов:
class BookController extends Zend_Controller_Action
{
protected $access;
protected $logger;
protected $db;
public function init()
{
/* Initialize action controller here */
$this->logger = Zend_Registry::get("logger");
$this->db = Zend_Registry::get("db");
}
public function preDispatch() {
}
public function __call($methodName, $args) {
$this->indexAction();
}
}
Если бы сейчас меня спросили, что лучше Laravel или Zend1 + некоторые дописанные современные штучки? Я бы ответил Zend1. Laravel здесь беру для сравнения, так как в нем сейчас много современных удобств.
Также пользовался компонентами:
Можно сказать, что я использовал почти все возможности продукта. Безусловно Zend1, это уже старенькая штучка, написанная без использования namespace, да и много чего еще можно сказать. И тем не менее - это красиво, и до сих пор удобно. Набор базовых компонент, на мой взгляд, великолепен и покрывает 90% нужд.
Zend Framework 2 - модно, быстро, круто и неудобно)))
Когда впервые стал думать о переходе на Zend2, то первое что убило меня - это новая библиотека Zend-db. Это был кромешный ужас понимания того, что Разработчики продукта идут в неизвестном мне направлении. После этого шока я на время вообще отложил вопрос перехода. И понял, что если и перейду на Zend2, то библиотеку для подключения к Базе Данных надо брать стороннюю, и я выбрал Doctrine 2.
Шоком номер 2 было отсутствие компонента Zend_Registry и замена его на ServiceManager. Привык к этому не сразу, но привык. В чем-то даже плюсы нашел. Но все же сложность продукта стала, на мой взгляд, слишком большая.
Конечно, заметен прирост скорости, по сравнению с предыдущей версией, но цена за неудобства слишком велика.
Zend Framework 3 - времена пост-апокалипсиса, надежно и совсем неудобно))
На а тут, уже на подходе к изучению был расколот пополам)) Теперь в контроллерах нельзя напрямую вызывать ServiceManager.... Может я и ошибаюсь, но такое впечатление что разработчики продукта решил реализовать 2 следующих задачи в своем подходе:
И скепсис мой, думаю, вполне оправдан. Когда встречаешься с тем, что простую вещь можно сделать, только прочтя половину документации - скепсис появляется сам собой. Получается, что вместо того, чтобы заниматься разработкой своего продукта, нужно изучать Zend 3. А когда же работать то?
Итог изысканий, безусловные плюсы Zend и перспектива
Из всего сказанного сделал такой вывод - сам буду продолжать писать на Zend2, и ждать с надеждой что Zend3 сделает резкий разворот к упрощению. Иначе - из перспектив это Laravel.
Безусловно, одним из гигантских плюсов является хорошая поддержка продукта (4-5 лет), и это сейчас решающая причина работы на Zend.
Мой итог - Zend 2 + Doctrine 2.