This is an installment in an ongoing series of posts on ZF3 development status.
Since the last status update:
- ~130 pull requests merged, and ~100 issues closed.
- Over 30 component releases.
- Completion of the component documentation migration.
- Tagging of zend-mvc 3.0.
- Completion of the new skeleton application and related installers.
Since the last update, we managed to complete the migration of documentation to
components, as well as publish documentation for all components!
You can view a list of all documented components via GitHub Pages:
Each component contains a link in the topnav to scroll in the component list,
allowing you to navigate to other components.
Please help us thank Frank Brückner for the
enormous amount of assistance he provided driving this milestone to completion!
zend-mvc 3.0 stability
After copious testing with the skeleton application (more on that below), and
prepping components such as zend-test to work with it, we decided that zend-mvc
was ready to tag with a 3.0 stable version!
For those not following previous updates, the main goals of the zend-mvc v3 effort were:
- De-couple from other components. Many components were listed as development
requirements and suggestions due to the fact that zend-mvc contained
zend-servicemanager integrations for them. We have moved those integrations
into the components themselves.
- Reduce dependencies to exactly what's needed for a basic zend-mvc application:
- Standard Library
- Split optional integrations into their own packages. These included:
- Console integration (now provided via zend-mvc-console)
- i18n integration (now provided via zend-mvc-i18n)
- Several plugins had requirements on additional libraries, including:
- PRG (uses zend-session)
- FilePRG (uses zend-form and zend-session)
- FlashMessenger (uses zend-session)
- Identity (uses zend-authentication)
During the process, we were able to remove around 75% of the code, making the
component much smaller, more maintainable, and more focused.
Once zend-mvc was tagged 3.0, we quickly followed up with a zend-test 3.0
release, and stable releases of zend-mvc-console, zend-mvc-i18n, and the
various zend-mvc-plugin packages.
We'd begun refactoring the skeleton application previously, and were able to
complete the work in the past couple weeks. The new skeleton:
- Migrates to PSR-4 directory layout for the shipped
- Relies on Composer for all autoloading, including the
- Removes all translations. These were of dubious use, and were quite difficult
- Depends only on zend-mvc, zend-component-installer (which automates injecting
components and modules into application configuration during installation), and
zend-skeleton-installer (more on this below).
- We removed almost 8000 lines of code, adding only 800!
zend-skeleton-installer is a new Composer plugin that prompts the user during installation to:
- Decide if they want a minimal install, or want to add optional packages.
- Prompts for a number of common optional packages, including caching, logging,
console integration, i18n, etc.
- When installation is complete, it removes itself from the project!
Matthew plans to blog on the code behind zend-skeleton-installer in the near future.
You can test out the new skeleton using the following:
$ composer create-project "zendframework/skeleton-application:dev-develop" zend-project
The above will use the new develop branch, and create a project in the
Finally, we added both an updated
Vagrantfile and Docker support to the
skeleton, allowing you to start developing in a consistent, de-coupled
For Vagrant, after you've installed, execute:
$ vagrant up
For Docker, you will need to use docker-compose;
once you have that available, execute:
$ docker-compose up -d --build
With each, we bind your host port 8080 to the container's port 80, allowing you to visit
it at http://localhost:8080/
We're excited about the new skeleton, and look forward to getting your feedback on it!
We have a few last milestones before we're ready to announce the completion of the
Zend Framework 3 initiatives.
First, because PHP 5.5 support ends at the end of June, we will be releasing a new minor
version of all components setting the minimum supported PHP version to 5.6. (Many already
have such versions in place.)
Second, now that the skeleton application is ready, we will be migrating our tutorials
to a new repository, converting them to Markdown and MkDocs, and updating them to follow
the new skeleton and component changes.
Finally, we will be deciding what the zendframework/zendframework package will look like
for a version 3 tag. In large part, it becomes unnecessary, as we can ship even the
skeleton with a minimal set of components; however, for those who want "everything at
once", keeping it around as a metapackage may have value. We'll be announcing
the plans for it soon.
Until next time
If you want to help:
- Test the new skeleton (see the directions above) and provide feedback.
- Search for help wanted
issues (most of the latter are documentation).
Many thanks to all the contributors who have provided feedback, patches, reviews,
or releases since the last update!