All notable changes to this project will be documented in this file, in reverse chronological order by release.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- #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.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
-
#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.
-
#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
-
#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 the
HydratorPluginManager
to ensure you can still obtain instances. -
#87 modifies
Zend\Hydrator\ConfigProvider
to add a factory entry forZend\Hydrator\StandaloneHydratorPluginManager
. -
#87 modifies
Zend\Hydrator\ConfigProvider
to change the target of theHydratorManager
alias based on the presence of the zend-servicemanager package; if the package is not available, the target points toZend\Hydrator\StandaloneHydratorPluginManager
instead ofZend\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 the
AggregateHydrator
. -
#80 bumps the minimum supported zend-serializer version to 2.9.0. zend-serializer is only required if you are using the
SerializableStrategy
. -
#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
- #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
)
-
#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.
- Nothing.
- Nothing.
- #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.
- Nothing.
- Nothing.
- Nothing.
- #70 updates the
DateTimeFormatterStrategy
to work with anyDateTimeInterface
, and not justDateTime
.
- #75 ensures continuous integration requires PHP 7.2 tests to pass; they already were.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- #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.
-
#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.
- #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.
- Nothing.
- #63 removes support for HHVM.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- Nothing.
- #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.
- #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.
- Nothing.
- Nothing.
- #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.
- Nothing.
- Nothing.
- Nothing.
- #28 fixes the
Module::init()
method to properly receive aModuleManager
instance, and not expect aModuleEvent
.
- #26 exposes the
package as a ZF component and/or generic configuration provider, by adding the
following:
HydratorPluginManagerFactory
, which can be consumed by container-interop / zend-servicemanager to create and return aHydratorPluginManager
instance.ConfigProvider
, which maps the serviceHydratorManager
to the above factory.Module
, which does the same asConfigProvider
, but specifically for zend-mvc applications. It also provices a specification toZend\ModuleManager\Listener\ServiceListener
to allow modules to provide hydrator configuration.
- Nothing.
- Nothing.
- Nothing.
- #20 imports the documentation from zend-stdlib, publishes it to https://zendframework.github.io/zend-hydrator/, and automates building and publishing the documentation.
- Nothing.
- Nothing.
- #6 add additional unit test coverage
- #17 and #23 update the code to be forwards compatible with zend-servicemanager v3, and to depend on zend-stdlib and zend-eventmanager v3.
- The following classes were marked
final
(per their original implementation in zend-stdlib):Zend\Hydrator\NamingStrategy\IdentityNamingStrategy
Zend\Hydrator\NamingStrategy\ArrayMapNamingStrategy
Zend\Hydrator\NamingStrategy\CompositeNamingStrategy
Zend\Hydrator\Strategy\ExplodeStrategy
Zend\Hydrator\Strategy\StrategyChain
Zend\Hydrator\Strategy\DateTimeFormatterStrategy
Zend\Hydrator\Strategy\BooleanStrategy
- Nothing.
- Nothing.
- Nothing.
Initial release. This ports all hydrator classes and functionality from zend-stdlib to a standalone repository. All final keywords are removed, to allow a deprecation cycle in the zend-stdlib component.
Please note: the following classes will be marked as final
for a version 2.0.0
release to immediately follow 1.0.0:
Zend\Hydrator\NamingStrategy\IdentityNamingStrategy
Zend\Hydrator\NamingStrategy\ArrayMapNamingStrategy
Zend\Hydrator\NamingStrategy\CompositeNamingStrategy
Zend\Hydrator\Strategy\ExplodeStrategy
Zend\Hydrator\Strategy\StrategyChain
Zend\Hydrator\Strategy\DateTimeFormatterStrategy
Zend\Hydrator\Strategy\BooleanStrategy
As such, you should not extend them.
- Nothing.
- Nothing.
- Nothing.
- Nothing.