Note: this post was originally posted on the Zend Framework blog.
Today we’ve released Zend Framework 2.5.0!
I’m not going to provide a link to the downloads page, as this release marks a radical change for Zend Framework 2: as of this release, all components are now developed in their own separate repositories, and Zend Framework is itself essentially only a metapackage that aggregates the components via Composer!
The impact on users is transparent; a
composer update will pick up the new version, which will in turn install the individual components.
There are a few potential issues for users upgrading to 2.5.0.
First, for those users who were incorporating the repository via git submodules, that approach will no longer work, as the ZF2 repository no longer contains code! If you are doing this, you will either need to start using Composer, or add every component as a git submodule, which will likely also require setting up custom autoloading.
Second, for users who were using the download packages we previously had available via our Downloads page, we are not currently providing a package. You can safely stay at version 2.4 (which is our long-term support version) for now. We are evaluating re-instating full download packages in the future, but need to gauge interest and how much effort will be needed to automate such packaging.
Third, for users of our translation resources, the translation files are no longer in the
resources/languages/ directory. This is because they now have their own dedicated package, zendframework/zend-i18n-resources! As such, you cannot just point your code at that directory in your ZF2 install; you will need to do a little bit of work to integrate. The repository has full information on how you can accomplish that.
Finally, we have a significant bump in our minimum supported PHP version starting with 2.5.0: we now require PHP 5.5+. PHP 5.3 is no longer receiving even security updates at this time, and PHP 5.4 support ends on 14 September 2015 — just over 3 months from now. We encourage our users on versions prior to 5.5 to migrate immediately; the migration from 5.4 to 5.5 or 5.6 is trivial, and you’ll get substantial performance benefits in addition to new features.
Other than the major architectural change and the PHP version bump, the code in 2.5.0 is exactly the same as you have in 2.4.2.
The following is a listing of the various components that make up Zend Framework, linked to their GitHub repository. Each component contains full history of changes for that component since the 2.0.0 release.
- Zend\Authentication (zend-authentication)
- Zend\Barcode (zend-barcode)
- Zend\Cache (zend-cache)
- Zend\Captcha (zend-captcha)
- Zend\Code (zend-code)
- Zend\Config (zend-config)
- Zend\Console (zend-console)
- Zend\Crypt (zend-crypt)
- Zend\Db (zend-db)
- Zend\Debug (zend-debug)
- Zend\Di (zend-di)
- Zend\Dom (zend-dom)
- Zend\Escaper (zend-escaper)
- Zend\EventManager (zend-eventmanager)
- Zend\Feed (zend-feed)
- Zend\File (zend-file)
- Zend\Filter (zend-filter)
- Zend\Form (zend-form)
- Zend\Http (zend-http)
- Zend\I18n (zend-i18n)
- Zend\InputFilter (zend-inputfilter)
- Zend\Json (zend-json)
- Zend\Ldap (zend-ldap)
- Zend\Loader (zend-loader)
- Zend\Log (zend-log)
- Zend\Mail (zend-mail)
- Zend\Math (zend-math)
- Zend\Memory (zend-memory)
- Zend\Mime (zend-mime)
- Zend\ModuleManager (zend-modulemanager)
- Zend\Mvc (zend-mvc)
- Zend\Navigation (zend-navigation)
- Zend\Paginator (zend-paginator)
- Zend\Permissions\Acl (zend-permissions-acl)
- Zend\Permissions\Rbac (zend-permissions-rbac)
- Zend\ProgressBar (zend-progressbar)
- Zend\Serializer (zend-serializer)
- Zend\Server (zend-server)
- Zend\ServiceManager (zend-servicemanager)
- Zend\Session (zend-session)
- Zend\Soap (zend-soap)
- Zend\Stdlib (zend-stdlib)
- Zend\Tag (zend-tag)
- Zend\Test (zend-test)
- Zend\Text (zend-text)
- Zend\Uri (zend-uri)
- Zend\Validator (zend-validator)
- Zend\Version (zend-version)
- Zend\View (zend-view)
- Zend\XmlRpc (zend-xmlrpc)
We also have two new components in the Zend Framework family:
- Diactoros, a PSR-7 implementation, providing HTTP message, URI, uploaded file, and stream implementations.
- Stratigility, a PSR-7-compatible middleware implementation based on Sencha Connect.
These are in their early 1.0 versions, though fully stable. We’ll be discussing them in more detail in later blog posts. If you want information now, Matthew recently delivered a webinar on PSR-7 and Stratigility.
This release marks the completion of the first major milestone towards Zend Framework 3! With the various components now versioned on their own timelines and in their own repositories, we can start cherry-picking which components need refactoring or new features. Along the way, we will be creating teams of interested contributors to maintain specific components, which should help accelerate development velocity.
In the near future, we will be working on introducing PSR-7 and middleware support in the ZF2 MVC layer, as well as creating a workflow for wrapping the ZF2 MVC inside of PSR-7-based middleware to allow execution alongside other frameworks and code bases.
Splitting the components into their own repositories and setting up the metapackage approach for the ZF2 repository was not easy. Fortunately, we had some very motivated contributors to assist along the way. In particular:
- Gianluca Arebezzano and Corley (an Italian AWS partner). Gianluca suggested we perform the component splits in parallel via AWS, and convinced Corley, where he works, to help make it happen. Because of this generous support, we were able to do what would have taken weeks in a matter of a single day.
- Maks3w, one of our community review team, who did a ton of work around our testing and continuous integration structure to ensure that the rewritten component repositories could be tested seamlessly.
Version 2.5.0 is only the beginning; you’ll be seeing some exciting changes in the Zend Framework project soon!