Zend Framework 1.8 PREVIEW Release

By the time you read this, the Zend Framework team will have released a preview release of 1.8.0. While the final release is scheduled for later this month, this release represents the hard work of many contributors and shows off a variety of powerful new components.

If you're a Zend Framework user, you should give the preview release a spin, to see what it can do:

One common criticism of Zend Framework is that it doesn't fulfill the traditional definition of a framework. One definition cited has been from TheFreeDictionary, and includes the following two potential matches:

A structure for supporting or enclosing something else, especially a skeletal support used as the basis for something being constructed.

A set of assumptions, concepts, values, and practices that constitutes a way of viewing reality.

The argument is that ZF does not provide the "assumptions" or opinions on how an application should be built. However, this makes sense only if you buy into the idea that a framework should always follow the "convention over configuration" rule — which we soundly reject with Zend Framework. Our opinion has always been that developers know best how their application should be built, and that ZF code should support the myriad uses to which they will put it.

That said, with the addition of Zend_Application and Zend_Tool, Zend Framework now provides a comprehensive framework for its users that is opinionated and provides the flexibility for developers to impose whatever structure they need.

Zend_Tool provides a tooling framework for Zend Framework. It allows you to create your own tooling providers that can then be utilized by tooling clients, which utilize an RPC style architecture. We now ship a Console or command line interface (CLI) client that allows you to perform a variety of tasks — such as setting up your initial project structure, adding new resources to a project, adding action methods and view scripts to controllers, and more. As an example, you can now do this:

$ zf create project foo

and generate the skeleton for a new project in a directory named "foo", with the following structure:

|-- application
|   |-- Bootstrap.php
|   |-- configs
|   |   `-- application.ini
|   |-- controllers
|   |   |-- ErrorController.php
|   |   `-- IndexController.php
|   |-- models
|   `-- views
|       |-- helpers
|       `-- scripts
|           |-- error
|           |   `-- error.phtml
|           `-- index
|               `-- index.phtml
|-- library
|-- public
|   |-- .htaccess
|   `-- index.php
`-- tests
    |-- application
    |   `-- bootstrap.php
    |-- library
    |   `-- bootstrap.php
    `-- phpunit.xml

In the future, we will be adding more support to this. A big kudos to Ralph Schindler for doing the heavy lifting on this project.

Zend_Application provides both bootstrapping of your PHP environment as well as your application environment. When using Zend_Application, you will create an application bootstrap class that can either use resource plugin classes or define initialization routines internally; regardless, it allows you to define resource dependencies and bootstrap the various facets of your application. Even better, it introduces modules as first-class citizens of your applications. With the introduction of Zend_Loader_Autoloader_Resource and Zend_Application_Module_Autoloader, you can now use autoloading to resolve the various resource classes in your modules — such as models, forms, and plugins. This tremendously simplifies the story for utilizing resources from other modules, as well as using resources within the same module. A big thank you goes out to Ben Scholzen for getting the ball rolling on Zend_Application and his significant contributions to the component.

There are many other stories in this release:

  • Amazon EC2 and S3 support (contributed by Jon Whitcraft and Justin Plock/Stas Malyshev, respectively)
  • Zend_Navigation, a comprehensive solution to generating and organizing navigation elements for use with breadcrumbs, navigation menus, sitemaps, and more (contributed by Robin Skoglund and Geoffrey Tran, from Zym)
  • Numerous additions to Zend_Validate and Zend_Filter support (primarily by Thomas Weidner)
  • Improvements to Zend_Search_Lucene support including searching multiple indexes and keyword field search via query strings (contributed by Alexander Veremyev)
  • Improvements to Zend_Pdf, including page scaling, shifting, and skewing (contributed by Alexander Veremyev)
  • and more…

A hearty thanks to all who have contributed so far in this release. Start testing it, and let us know what we can improve for the final 1.8 release later this month!