THIS RELEASE IS A DEVELOPMENT RELEASE AND NOT INTENDED FOR PRODUCTION USE.
PLEASE USE AT YOUR OWN RISK.
This is the fourth in a series of planned beta releases. The beta release
cycle will follow the "gmail" style of betas, whereby new features will
be added in each new release, and BC will not be guaranteed; beta
releases will happen approximately every six weeks.
Once the established milestones have been reached and the featureset has reached
maturity and reasonable stability, we will freeze the API and prepare for
Release Candidate (RC) status. At this time, we are only planning for one more
beta release (beta5) before starting the RC process.
PLEASE NOTE: this beta includes a large number of breaks from the previous beta,
due to introduction of the ServiceManager, changes to the EventManager, renaming
of the ModuleManager, rewrite of the Form component (and removal of the Dojo
component), and several changes in the View layer. Please consult the
ZendSkeletonApplication to get an idea of the changes necessary to make your
application work with beta4.
Config component (Enrico Zimuel)
Added reader and writer implementations for JSON and YAML configuration
Crypt and Math (Enrico Zimuel)
Creates a generic API for string and stream en/decryption
Provides bcrypt support
Provides BigInteger support
Provides common methodology surrounding credential encryption and hashing
Db layer (Ralph Schindler)
Zend\Db\Adapter: added buffer() to the ResultInterface, added that feature
to Mysqli Result object
Zend\Db\Adapter: added ability to subselect Sqlite for returning a true
Zend\Db\Adapter: added API to return helper closures from the Adapter API
Renamed "database" to "schema" in all usages across Zend\Db
Zend\Db\Adapter: Various fixes for PDO connection parameters
Zend\Db\Sql: created a shared AbstractSql implementation to share
Zend\Db\Sql: created a more robust "Expression" object for use in Select
Zend\Db\Sql: created an internal workflow and architecture to handle the
creation of platform specific queries
Zend\Db\Sql: implemented limit() and offset() API to Select
Zend\Db\Sql: added having(), order() to SELECT API
Zend\Db\Sql: added alias support to Select::columns()
Zend\Db\TableGateway: reorganized AbstractTableGateway and TableGateway,
removed other extensions in favor of "Features"
Zend\Db\TableGateway: created a "Features" API in TableGatway to promote
horizontal extension of TableGatway
Di (Ralph Schindler, Marco Pivetta)
Added method injectDependencies($instance), to allow injecting an object
after an instance is already available (used in the ServiceManager)
Various fixes based on issue reports
REMOVED. Support was for out-dated versions of Dojo, and with the new Form
rewrite, it needs to be completely rewritten. This is targetted for post
2.0.0 at this time.
EventManager (Matthew Weier O'Phinney)
New SharedEventManager, a non-static version of the original
StaticEventManager now extends SharedEventManager and implements a
New ServiceManager creates a shared instance of SharedEventManager and
injects it in a non-shared EventManager instance per service; static usage
is discouraged at this time.
attachAggregate() now accepts an optional $priority, which, when present,
will be passed to the ListenerAggregate, allowing specifying a priority
during attachment of its events.
EventManager now can handle arrays of events as well as wildcard events
SharedEventManager now can handle arrays of contexts, wildcard contexts,
and arrays/wildcard events.
Form (Matthew Weier O'Phinney, Kyle Spraggs, Guilherme Blanco)
Elements compose a name and attributes
Fieldsets compose a name, attributes, and elements and fieldsets
Forms compose a name, attributes, elements, fieldsets, an InputFilter, and
optionally a Hydrator and bound object.
New form view helpers accept the Form objects in order to generate markup.
Object binding allows direct binding of model data to and from the Form.
InputFilter (Matthew Weier O'Phinney)
New component for object-oriented creation of input filters
Input objects compose filter and validator chains, as well as metadata
such as required, allow empty, break on failure, and more.
InputFilter objects compose Input and InputFilter objects, and allow
validating the entire set or specified validation groups.
Log (Enrico Zimuel, Benoit Durand)
Refactored to provide more flexibility
Adds API discoverability (instead of method overloading)
Uses the PluginBroker for loading writers and formatters
Uses PriorityQueue to manage writer priority
Uses FilterChain for filtering messages
Adds a renderer for exceptions, a JSON formatter, and additional interfaces
Mail (Enrico Zimuel)
Allow batch sending via the SMTP transport
ModuleManager (Evan Coury, Matthew Weier O'Phinney)
Renamed from "Module" to "ModuleManager"
Renamed "Consumer" subnamespace to "Feature"
Added new listeners:
OnBootstrapListener (Module classes defining onBootstrap() will have
that method attached as a listener on the Application bootstrap event)
LocatorRegistrationListener (Module classes implementing the
LocatorRegisteredInterface feature will be injected in the
ServiceListener (Module classes defining getServiceConfiguration() will
have that method called, and the configuration merged; once all modules
are loaded, that merged configuration will be passed to the
MVC (Matthew Weier O'Phinney, Ralph Schindler, Evan Coury)
Removed Bootstrap class and rewrote Application class
Composes a ServiceManager, and simply fires events
Added RouteListener and DispatchListener classes, implementing the default
route and dispatch strategies.
Created a new "Service" subnamespace, with ServiceManager configuration
and factories for the default MVC services.
Created a new "ViewManager" class, which triggers on the bootstrap event,
at which time it creates the various objects of the view layer and wires
them together as well as registers them with the appropriate events.
InjectTemplateListener now uses the controller namespace to further
namespace the view template; the default is now
ServiceManager component (Ralph Schindler, Matthew Weier O'Phinney)
Highly performant, programmatic service creation
Largely replaces DI, but can also consume Zend\Di
Lazy-loaded service objects
Abstract (fallback) factories
Initializers (manipulate instances after creation)