All notable changes to this project will be documented in this file, in reverse chronological order by release.
require-dev
to require
, as it is
a requirement of the RequestFactory
, and removal of the package causes that factory to fail.Zend\Mvc\Controller\PluginManager
implementation to vary
based on zend-servicemanager major version detected in order to ensure the
signature of get()
will be correct regardless of version.Updates the Zend\Mvc\Controller\PluginManager::get()
signature to match
that of Zend\ServiceManager\AbstractPluginManager::get()
, and thus ensure
compatibility when running under PHP 7.2.
#234 fixes docblock
annotations in AbstractActionController::indexAction
and notFoundAction
to
indicate they return a ViewModel|ConsoleModel
and not array
.
FormAnnotationBuilderFactory::injectFactory()
to pass the correct
arguments to the plugin manager's injectFactory()
initializer when running
under zend-servicemanager v2.replace
entry to the composer.json
indicating the package replaces
zendframework/zend-router. This is done to prevent errors from installing both
zend-mvc v2 with zend-router, which could lead to subtle errors when checking
exceptions, locating route types, etc. Users should upgrade to zend-mvc v3 if
they wish to use the standalone zend-router package.require-dev
and suggest
sections of
composer.json
, and updates the RouteNotFoundStrategy::getConsoleBanner()
method to no longer use the version constant. Since zend-version has had no
real meaning since the 2.5 release, this removes ambiguity for end-users.FormAnnotationBuilderFactory
injects the builder with the
FormElementManager
service such that it will work with the latest zend-form
releases.Zend\Mvc\Service\DiAbstractServiceFactoryFactory
and
Zend\Mvc\Service\DiServiceInitializerFactory
, now raise exceptions if they
detect they are running under zend-servicemanager v3, and prompt the developer
to install zend-servicemanager-di.Zend\Mvc\Service\DiAbstractServiceFactoryFactory
Zend\Mvc\Service\DiFactory
Zend\Mvc\Service\DiServiceInitializerFactory
Zend\Mvc\Service\DiStrictAbstractServiceFactory
Zend\Mvc\Service\DiStrictAbstractServiceFactoryFactory
ControllerLoaderFactory
as deprecated via annotation (though it has been
noted as such in the documentation for several years). Use
Zend\Mvc\Service\ControllerManagerFactory
instead.Zend\Mvc\Service\DiAbstractServiceFactoryFactory
.$exception
argument of DispatchListener::marshalBadControllerEvent()
,
fixing an issue when PHP 7 Error types are caught and passed to the method.Throwable
s within each of:
DispatchListener
MiddlewareListener
RouteNotFoundStrategy
and ExceptionStrategy
DefaultRenderingStrategy
and RouteNotFoundStrategy
FormAnnotationBuilderFactory
to use the container's get()
method instead
of build()
to retrieve the event manager instance.DiStrictAbstractServiceFactoryFactory
that prevented
it from working.Forward
plugin detects and detaches event listeners to ensure it works
against either v2 or v3 releases of zend-eventmanager.ConsoleExceptionStrategyFactory
whereby it was overwriting the default
exception message template with an empty string when no configuration for it
was provided.ServiceLocatorAware
initializer whereby plugin manager instances were
falsely identified as the container instance when under zend-servicemanager v2.ServiceManager
factory definition inside ServiceManagerConfig
, to ensure
backwards compatibility.Zend\Mvc\Service\ServiceListenerFactory
,
which were accidently removed in the 2.7.0 release.Forward
plugin to work with both v2 and v3
of zend-eventmanager.Catchall
route factory will not fail when the defaults
$options
array key is missing.AbstractRestfulController
to ensure it can accept textual (e.g., XML, YAML)
data.ServiceLocatorAware
initializers; in particular, all
AbstractController
implementations were raising a deprecation wen first
pulled from the ControllerManager
.
At this time, notices are now only raised in the following conditions:
ServiceLocatorAware
instance
is detected.ServiceLocatorAware
and
does not have a composed service locator. In this situation, the deprecation
notice indicates that the factory for the plugin manager should be updated
to inject the service locator via the constructor.AbstractController
but do implement
ServiceLocatorAware
.getServiceLocator()
from within an AbstractController
extension; this properly calls out the practice that should be avoided and
which requires updates to the controller.Zend\Mvc\Application
constructor: an EventManager
instance, a Request instance, and a Response instance.Zend\Mvc\MiddlewareListener
, which allows dispatching PSR-7-based middleware
implementing the signature function (ServerRequestInterface $request,
ResponseInterface $response)
. To dispatch such middleware, point the
middleware
"default" for a given route to a service name or callable that
will resolve to the middleware: [ 'router' => 'routes' => [
'path' => [
'type' => 'Literal',
'options' => [
'route' => '/path',
'defaults' => [
'middleware' => 'ServiceNameForPathMiddleware',
],
],
],
]
This new listener listens at the same priority as the DispatchListener
, but,
due to being registered earlier, will invoke first; if the route match does
not resolve to middleware, it will fall through to the original
DispatchListener
, allowing normal ZF2-style controller dispatch.
Zend\Mvc\Service\ServiceManagerConfig
are now
deprecated, and will be removed starting in version 3.0:
ServiceManagerAwareInitializer
, which injects classes implementing
Zend\ServiceManager\ServiceManagerAwareInterface
with the service manager
instance. Users should create factories for such classes that directly
inject their dependencies instead.ServiceLocatorAwareInitializer
, which injects classes implementing
Zend\ServiceManager\ServiceLocatorAwareInterface
with the service manager
instance. Users should create factories for such classes that directly
inject their dependencies instead.Zend\Mvc\Controller\AbstractController
no longer directly implements
Zend\ServiceManager\ServiceLocatorAwareInterface
, but still implements the
methods defined in that interface. This was done to provide
forwards-compatibility, as zend-servicemanager v3 no longer defines the
interface. All initializers that do ServiceLocatorInterface
injection were
updated to also inject when just the methods are present.RouteInvokableFactory
, which can act as either a
FactoryInterface
or AbstractFactoryInterface
for loading invokable route
classes, including by fully qualified class name. This is registered as an
abstract factory by default with the RoutePluginManager
.DispatchListener
now receives the controller manager instance at
instantiation.ViewManager
implementations were updated, and most functionality
within separated into discrete factories.FormAnnotationBuilderFactory
's usage of the
FormElementManager::injectFactory()
method to ensure it works correctly on
all versions.ViewHelperManagerFactory
to be backwards-compatible with v2 by ensuring that
the factories for each of the url
, basepath
, and doctype
view helpers
are registered using the fully qualified class names present in
Zend\View\HelperPluginManager
; these changes ensure requests for these
helpers resolve to these override factories, instead of the
InvokableFactory
.HydratorPluginManager
from zend-stdlib 2.7.5. This was done to
provide backwards compatibility; while zend-stdlib Hydrator types can be used
in place of zend-hydrator types, the reverse is not true.You can make your code forwards-compatible with version 3, where the
HydratorPluginManager
will be pulled from zend-hydrator, by updating your
typehints to use the zend-hydrator classes instead of those from zend-stdlib;
the instances returned from the zend-stdlib HydratorPluginManager
, because
they extend those from zend-hydrator, remain compatible.
>=2.5.0,<2.7.0
to ensure hydrators
will work as expected following extraction of hydrators to the zend-hydrator
repository.DefaultRenderingStrategy
.