I'm pleased to announce the Zend Framework 1.8.0 release, the first in our 1.8 series of releases. This release marks the culmination of several long-standing projects, as well as a formalization of many of our recommended practices.
There are two major stories in this release: first, the addition of several components designed to provide and promote Rapid Application Development; second, two offerings that make using Zend Framework in the cloud easier.
Rapid Application Development
1.8.0 marks the first public release of Zend_Tool. At its simplest, Zend_Tool provides a command-line script that can be used to ease many common project-related tasks: setting up the project tree, adding controllers, actions (and related view scripts), model classes, etc. More advanced users can create their own tool providers that can then be directly invoked from that script -- or even create their own RPC endpoints so as to expose the tooling on the web or via a web service.
As an example of it in action, check out this screenshot:
In a related vein, 1.8 also introduces Zend_Application, which provides a standard and object oriented method for bootstrapping applications. Bootstraps may define their own initialization resources, or draw upon some common plugins to do their work. Additionally, resources may be bootstrapped individually, allowing you to utilize a common bootstrap with multiple gateway scripts tailored for different tasks.
One dependency of Zend_Application is Zend_Loader_Autoloader. Zend_Loader_Autoloader is a replacement for Zend_Loader::autoload(), and solves many of the issues users have reported with that solution. Additionally, it provides the ability to manage a stack of namespaced autoloaders, working around some minor issues of the SPL's autoloader as well as providing opportunistic matching of namespace prefixes to match your classes quickly. A subcomponent, Zend_Loader_Autoloader_Resource provides a simple mechanism for mapping classes to the filesystem when the directory structure may not exactly correspond to the class name. By using an autoloader by default, you can help keep your code more performant as well as leave class resolution out of your code -- greatly epediting application development.
Note: the Zend Framework Quick Start has been updated to use Zend_Tool and Zend_Application. It's an excellent introduction to these components as well as Zend Framework's MVC in general.
Web 2.0 applications have many demands not seen in traditional web applications. One of these is the need for distributed storage, and another is the need to scale horizontally on demand as traffic to your site spikes.
Amazon S3 provides web services developers may use to store and retrieve data. The service is distributed, and thus highly scalable, reliable, and fast. Zend_Service_Amazon_S3 provides an object oriented approach to the service, as well as a PHP streams wrapper -- both designed to make working with S3 from your PHP applications a simple matter.
Amazon EC2 provides a web service to allow launching and managing server instances within Amazon's data centers. These server instances may be used at any time for any length of time -- allowing you to scale your site only when you need to handle extra traffic, or run your services entirely from the EC2 platform.
The number of community contributions and bug fixes for 1.8.0 has been phenomenal. Below is a list of the primary feature additions for the release.
- Zend_Tool, contributed by Ralph Schindler
- Zend_Application, contributed by Ben Scholzen and Matthew Weier O'Phinney
- Zend_Loader_Autoloader and Zend_Loader_Autoloader_Resource, contributed by Matthew Weier O'Phinney
- Zend_Navigation, contributed by Robin Skoglund
- Zend_CodeGenerator, by Ralph Schindler
- Zend_Reflection, Ralph Schindler and Matthew Weier O'Phinney
- Zend Server backend for Zend_Cache, contributed by Alexander Veremyev
- Zend_Service_Amazon_Ec2, contributed by Jon Whitcraft
- Zend_Service_Amazon_S3, Justin Plock and Stas Malyshev
- Incorporated Dojo 1.3
- Added support for arbitrary Dojo Dijits via view helpers
- Zend_Filter_Encrypt, contributed by Thomas Weidner
- Zend_Filter_Decrypt, contributed by Thomas Weidner
- Zend_Filter_LocalizedToNormalized and _NormalizedToLocalized, contributed by Thomas Weidner
- Support for file upload progress support in Zend_File_Transfer, contributed by Thomas Weidner
- Translation-aware routes, contributed by Ben Scholzen
- Route chaining capabilities, contributed by Ben Scholzen
- Zend_Json expression support, contributed by Benjamin Eberlei and Oscar Reales
- Zend_Http_Client_Adapter_Curl, contributed by Benjamin Eberlei
- SOAP input and output header support, contributed by Alexander Veremyev
- Support for keyword field search using query strings, contributed by Alexander Veremyev
- Support for searching across multiple indexes in Zend_Search_Lucene, contributed by Alexander Veremyev
- Significant improvements for Zend_Search_Lucene search result match highlighting capabilities, contributed by Alexander Veremyev
- Support for page scaling, shifting and skewing in Zend_Pdf, contributed by Alexander Veremyev
- Zend_Tag_Cloud, contributed by Ben Scholzen
- Locale support in Zend_Validate_Int and Zend_Validate_Float, contributed by Thomas Weidner
- Phonecode support in Zend_Locale, contributed by Thomas Weidner
- Zend_Validate_Db_RecordExists and _RecordNotExists, contributed by Ryan Mauger
- Zend_Validate_Iban, contributed by Thomas Weidner
- Zend_Validate_File_WordCount, contributed by Thomas Weidner
In addition, we recorded well over 200 bug fixes for this release.
Please join me in a hearty round of congratulations and acknowledgment of all contributors who helped make this release possible through code contributions, feedback, testing, documentation, translations, and issue reports!