THIS RELEASE IS A DEVELOPMENT RELEASE AND NOT INTENDED FOR PRODUCTION USE.
PLEASE USE AT YOUR OWN RISK.
This is the fifth and last in a series of planned beta releases. The
beta release cycle has followed the "gmail" style of betas, whereby new
features have been added in each new release, and BC has not been
Following this release, we plan to perform some repository cleanup, a
standards audit, and documentation migration. Once these tasks are
complete, we will prepare our first Release Candidate (RC).
PLEASE NOTE: this beta includes a number of breaks from the previous
beta. Please read the notes below prefixed with "BC BREAK" for specific
breakages. The ZendSkeletonApplication typically reflects any BC changes
that have been made, and is a good resource.
Escaper component (Padraic Brady)
Provides context-specific escaping mechanisms for HTML content,
BC BREAK: The escape() view helper was removed, and replaced with
escapeHtml(), escapeHtmlAttr(), escapeJs(), escapeCss(), and
New I18n component (Ben Scholzen, Chris Martin, Dennis Portnov,
Matthew Weier O'Phinney)
New component leveraging PHP's ext/intl extension to provide
internationalization (i18n) and localization (L10n) features and
capabilities to applications.
DateTime, DateTimezone, IntlDateFormatter
BC BREAK: REMOVES the following components:
All filters, validators, and view helpers that relied on the
Zend\I18n\Translator, including support for gettext and
PHP-array-based translations (more are planned).
Zend\I18n\Filter, containing localized filtering capabilites
for Alnum (alphanumeric), Alpha (alphabetic), and NumberFormat
Zend\I18n\Validator, containing localized validation
capabilities for Alnum (alphanumeric), Alpha (alphabetic),
Iban (international bank account number standard), Int
(integer), and PostCode (localized postal codes).
Zend\I18n\View, containing localized view helpers for
CurrencyFormat, DateFormat, NumberFormat, Translate, and
Db layer additions (Ralph Schindler, Rob Allen, Guillaume Metayer,
Sascha Howe, Chris Testroet, Evan Coury, Ben Youngblood)
New HydratingResultSet, allowing the ability to specify a custom
hydrator (from Zend\Stdlib\Hydrator) for hydrating row objects.
Many bugfixes and stabilizations
Form additions (Matthew Weier O'Phinney, Michaël Gallego, Yanick Rochon)
Annotations support: Ability to use annotations with a domain
object in order to define a form, fieldsets, elements, inputs and
input filters, and more.
Hydration of fieldsets; fieldsets may compose their own hydrators
Collection support; allows multiple instances of the same
fieldset. As an example, you might have an interface that
allows adding a set of form elements via an XHR call; on the
backend, these would be defined as a collection, allowing
arbitrary numbers of these fieldsets to be submitted.
New view helpers covering most HTML5-specific element types, most
XHTML-specific element types. Additionally, a number of the
HTML5-specific element types now have Element implementations to
create turn-key solutions that include validation and filtering.
BC BREAK: Options support. Many attributes were being used not as
HTML attributes but to define behavior. The ElementInterface now
has an accessor and mutator for options. Examples of options
include labels for non-radio/checkbox/select elements, the CAPTCHA
adapter for CAPTCHA elements, CSRF tokens, etc. If you were
defining labels in your forms, please move the label and label
attributes definitions from the "attributes" to the "options" of
the element, fieldset, or form.
BC BREAK: new interface, ElementPrepareAwareInterface, defining
the method "prepareElement(Form $form)". The FieldsetInterface,
and, by extension, FormInterface, extend this new interface. It is
used to allow preparing elements prior to creating a
MVC additions (Kyle Spraggs, Evan Coury, Matthew Weier O'Phinney)
New "Params" controller plugin. Allows retrieving query, post,
cookie, header, and route parameters. Usage is
New listener, Zend\Mvc\ModuleRouteListener. When enabled, if a
route match contains a "_NAMESPACE_" key, that namespace value
will be prepended to the value of the "controller" key. This
should typically be used in the root route for a given module, to
ensure controller names do not clash.
Bootstrap simplification. A new "init()" method was created that
accepts the path to a configuration file, and then creates and
bootstraps the application; this eliminates all common boilerplate
for the bootstrap scripts.
Hydrator changes (Adam Lundrigan)
BC BREAK: the ClassMethods hydrator now assumes by default that
it should convert between underscore_separated names and
BC BREAK: Doctrine Annotations Parser (Matthew Weier O'Phinney, Marco
Pivetta, Guilherme Blanco)
Zend\Code\Annotation now has a dependency on Doctrine\Common for
its annotation parser.
Annotations now conform to Doctrine's standards by default, but
the AnnotationManager in ZF2 allows attaching alternate parsers
for specific annotation types.
BC BREAK: Removal of Plugin Broker usage (Matthew Weier O'Phinney,
All uses of the Plugin Broker / Plugin Class Locator combination
were removed. A new class, Zend\ServiceManager\AbstractPluginManager,
was created and used to replace all previous usages of the plugin
broker. This provides more flexibility in creation of plugins, as
well as reduces the number of APIs developers need to learn.
Configuration of plugin managers is now done at the top-level. All
plugin manager configuration follows the format utilized by
Zend\ModuleManager\Listener\ServiceListener has been updated to
allow informing it of plugin manager instances it should manage,
as well as the configuration key to utilize.
BC BREAK: Coding Standards (Maks3w, Sascha Prolic, Rob Allen)
Renamed most abstract classes to prefix them with the term
"Abstract". In particular, ActionController and RestfulController
are now AbstractActionController and AbstractRestfulController.
Renamed getters in HTTP, EventManager, and Mail components. These
components were using accessors such as "events()", "query()",
"headers()", etc. All such accessors were renamed to prepend
"get", and, in the case of "events()", renamed to indicate the
actual object retrieved ("getEventManager()").
SECURITY FIX: XmlRpc (Matthew Weier O'Phinney)
A security issue arising from XML eXternal Entity (XXE) injection
was patched; see http://framework.zend.com/security/advisory/ZF2012-01
Over 400 pull requests for a variety of features and bugfixes were handled