Releases: zendframework/zend-hydrator
zend-hydrator 2.4.2
Added
- Nothing.
Changed
- Nothing.
Deprecated
- Nothing.
Removed
- Nothing.
Fixed
- #106 fixes PHP 7.4 compatibility.
zend-hydrator 3.0.2
Added
- Nothing.
Changed
- Nothing.
Deprecated
- Nothing.
Removed
- Nothing.
Fixed
- #103 restores the original behavior of the UnderscoreNamingStrategy with
regards to how numeric characters are treated. In version 2, they were
never used as word boundaries, while version 3.0 used them as word
boundaries in very specific, but hard to predict, scenarios. This release
restores the original behavior from version 2.
zend-hydrator 3.0.1
Added
- Nothing.
Changed
- Nothing.
Deprecated
- Nothing.
Removed
- Nothing.
Fixed
-
#97 adds a missing
static
keyword toZend\Hydrator\NamingStrategy\MapNamingStrategy::createFromAsymmetricMap
,
and simultaneously fixes a mis-spelling of the method name (it incorrectly
used two "s" characters previously, and only one "m" in "asymmetric"). As the
method could not be invoked as documented previously, these changes are
considered bugfixes and not BC breaks. -
#96 fixes issue with integer keys in
ArraySerializableHydrator
. Keys are now
cast to strings as we have strict type declaration in the library.
zend-hydrator 3.0.0
Added
-
#87 adds
Zend\Hydrator\HydratorPluginManagerInterface
to allow
type-hinting on plugin manager implementations. The interface simply extends
the PSR-11 ContainerInterface. -
#87 adds
Zend\Hydrator\StandaloneHydratorPluginManager
as an implementation
of each ofPsr\Container\ContainerInterface
andZend\Hydrator\HydratorPluginManagerInterface
,
along with a factory for creating it,Zend\Hydrator\StandaloneHydratorPluginManagerFactory
.
It can act as a replacement forZend\Hydrator\HydratorPluginManager
, but
only supports the shipped hydrator implementations. See the plugin manager documentation
for more details on usage. -
#79 adds a third, optional parameter to the
DateTimeFormatterStrategy
constructor.
The parameter is a boolean, and, when enabled, a string that can be parsed by
theDateTime
constructor will still result in aDateTime
instance during
hydration, even if the string does not follow the provided date-time format. -
#14 adds the following
final
classes:\Zend\Hydrator\NamingStrategy\UnderscoreNamingStrategy\UnderscoreToCamelCaseFilter
\Zend\Hydrator\NamingStrategy\UnderscoreNamingStrategy\CamelCaseToUnderscoreFilter
Changed
-
#89 renames the various hydrators to use the "Hydrator" suffix:
ArraySerializable
becomesArraySerializableHydrator
ClassMethods
becomesClassMethodsHydrator
ObjectProperty
becomesObjectPropertyHydrator
Reflection
becomesReflectionHydrator
In each case, the original class was re-added to the repository as a
deprecated extension of the new class, to be removed in version 4.0.0.
Aliases resolving the original class name to the new class were also added to
theHydratorPluginManager
to ensure you can still obtain instances. -
#87 modifies
Zend\Hydrator\ConfigProvider
to add a factory entry for
Zend\Hydrator\StandaloneHydratorPluginManager
. -
#87 modifies
Zend\Hydrator\ConfigProvider
to change the target of the
HydratorManager
alias based on the presence of the zend-servicemanager
package; if the package is not available, the target points to
Zend\Hydrator\StandaloneHydratorPluginManager
instead of
Zend\Hydrator\HydratorPluginManager
. -
#83 renames
Zend\Hydrator\FilterEnabledInterface
toZend\Hydrator\Filter\FilterEnabledInterface
(new namespace). -
#83 renames
Zend\Hydrator\NamingStrategyEnabledInterface
toZend\Hydrator\NamingStrategy\NamingStrategyEnabledInterface
(new namespace). -
#83 renames
Zend\Hydrator\StrategyEnabledInterface
toZend\Hydrator\Strategy\StrategyEnabledInterface
(new namespace). -
#82 and #85 change
Zend\Hydrator\NamingStrategy\MapNamingStrategy
in the following ways:- The class is now marked
final
. - The constructor is marked private. You can no longer instantiate it directly.
- The class offers three new named constructors; one of these MUST be used to
create an instance, as the constructor is now final:MapNamingStrategy::createFromExtractionMap(array $extractionMap) : MapNamingStrategy
will use the provided extraction map for extraction operations, and flip it
for hydration operations.MapNamingStrategy::createFromHydrationMap(array $hydrationMap) : MapNamingStrategy
will use the provided hydration map for hydration operations, and flip it
for extraction operations.MapNamingStrategy::createFromAssymetricMap(array $extractionMap, array $hydrationMap) : MapNamingStrategy
will use the appropriate map based on the requested operation.
- The class is now marked
-
#80 bumps the minimum supported PHP version to 7.2.
-
#80 bumps the minimum supported zend-eventmanager version to 3.2.1. zend-eventmanager
is only required if you are using theAggregateHydrator
. -
#80 bumps the minimum supported zend-serializer version to 2.9.0. zend-serializer is
only required if you are using theSerializableStrategy
. -
#80 bumps the minimum supported zend-servicemanager version to 3.3.2.
zend-servicemanager is only required if you are using the
HydratorPluginManager
orDelegatingHydrator
. This change means that
some service names supported by zend-servicemanager v2 will no longer work.
When in doubt, use the fully qualified class name, or the class name minus the
namespace, with correct casing. -
#80 adds scalar typehints both to parameters and return values, and object
typehints to parameters, wherever possible. For consumers, this should pose no
discernable change. For those implementing interfaces or extending classes
from this package, updates will be necessary to ensure your code will run.
See the migration guide for details. -
#14 replaces usage of zend-filter with the hardcoded filters referenced in
the above section. -
#14 made the following visibility changes to
\Zend\Hydrator\NamingStrategy\UnderscoreNamingStrategy
:- static property
$underscoreToStudlyCaseFilter
was renamed to$underscoreToCamelCaseFilter
and markedprivate
- static property
$camelCaseToUnderscoreFilter
was markedprivate
- method
getCamelCaseToUnderscoreFilter
was markedprivate
- method
getUnderscoreToStudlyCaseFilter
was renamed togetUnderscoreToCamelCaseFilter
and markedprivate
- static property
Deprecated
- #89 and
#93 deprecate the
following classes, which will be removed in 4.0.0:Zend\Hydrator\ArraySerializable
(becomesArraySerializableHydrator
)Zend\Hydrator\ClassMethods
(becomesClassMethodsHydrator
)Zend\Hydrator\ObjectProperty
(becomesObjectPropertyHydrator
)Zend\Hydrator\Reflection
(becomesReflectionHydrator
)
Removed
-
#83 removes the constructor in
Zend\Hydrator\AbstractHydrator
. All
initialization is now either performed via property definitions or lazy-loading. -
#82 removes
Zend\Hydrator\NamingStrategy\ArrayMapNamingStrategy
. The functionality
it provided has been merged intoZend\Hydrator\NamingStrategy\MapNamingStrategy
;
useMapNamingStrategy::createFromExtractionMap()
to create an instance that
has the same functionality asArrayMapNamingStrategy
previously provided.
Fixed
- Nothing.
zend-hydrator 2.4.1
Added
- Nothing.
Changed
- #69 adds support for special pre/post characters in formats passed to the
DateTimeFormatterStrategy
. When used, theDateTime
instances created
during hydration will (generally) omit the time element, allowing for more
accurate comparisons.
Deprecated
- Nothing.
Removed
- Nothing.
Fixed
- Nothing.
zend-hydrator 2.4.0
zend-hydrator 2.3.1
Added
- Nothing.
Changed
- Nothing.
Deprecated
- Nothing.
Removed
- Nothing.
Fixed
- #67 fixes an issue in the
ArraySerializable::hydrate()
logic whereby nested array data was merged instead of replaced during hydration. The hydrator now correctly replaces such data.
zend-hydrator 2.3.0
Added
-
#27 adds the interface
Zend\Hydrator\HydratorProviderInterface
for use with the zend-modulemanagerServiceListener
implementation, and updates theHydratorManager
definition for theServiceListener
to typehint on this new interface instead of the one provided in zend-modulemanager.Users implementing the zend-modulemanager
Zend\ModuleManger\Feature\HydratorProviderInterface
will be unaffected, as the method it defines,getHydratorConfig()
, will still be identified and used to inject heHydratorPluginManager
. However, we recommend updating yourModule
classes to use the new interface instead. -
#44 adds
Zend\Hydrator\Strategy\CollectionStrategy
. This class allows you to provide a single hydrator to use with an array of objects or data that represent the same type.From the patch, if the "users" property of an object you will hydrate is expected to be an array of items of a type
User
, you could do the following:$hydrator->addStrategy('users', new CollectionStrategy( new ReflectionHydrator(), User::class ));
-
#63 adds support for PHP 7.2.
Changed
- #44 updates the
ClassMethods
hydrator to add a second, optional, boolean argument to the constructor,$methodExistsCheck
, and a related methodsetMethodExistsCheck()
. These allow you to specify a flag indicating whether or not the name of a property must directly map to a defined method, versus one that may be called via__call()
. The default value of the flag isfalse
, which retains the previous behavior of not checking if the method is defined. Set the flag totrue
to make the check more strict.
Deprecated
- Nothing.
Removed
- #63 removes support for HHVM.
Fixed
- Nothing.
zend-hydrator 2.2.3
Added
- Nothing.
Changed
- Nothing.
Deprecated
- Nothing.
Removed
- Nothing.
Fixed
- #65 fixes the hydration behavior of the
ArraySerializable
hydrator when usingexchangeArray()
. Previously, the method would clear any existing values from the instance, which is problematic when a partial update is provided as values not in the update would disappear. The class now pulls the original values, and recursively merges the replacement with those values.
zend-hydrator 2.2.2
Added
- Nothing
Changes
- #42 updates the
ConfigProvider::getDependencies()
method to map theHydratorPluginManager
class to theHydratorPluginManagerFactory
class, and make theHydratorManager
service an alias to the fully-qualifiedHydratorPluginManager
class. - #45 changes the
ClassMethods
hydrator to take into account naming strategies when present, making it act consistently with the other hydrators.
Deprecated
- Nothing.
Removed
- Nothing.
Fixed
- #59 fixes how the
HydratorPluginManagerFactory
factory initializes the plugin manager instance, ensuring it is injecting the relevant configuration from theconfig
service and thus seeding it with configured hydrator services. This means that thehydrators
configuration will now be honored in non-zend-mvc contexts.