Download the PHP package ocramius/generated-hydrator without Composer
On this page you can find all versions of the php package ocramius/generated-hydrator. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download ocramius/generated-hydrator
More information about ocramius/generated-hydrator
Files in ocramius/generated-hydrator
Package generated-hydrator
Short Description An Object Hydrator that allows very fast array to object to array conversion
License MIT
Homepage https://github.com/Ocramius/GeneratedHydrator
Informations about the package generated-hydrator
Generated Hydrator
GeneratedHydrator is a library about high performance transition of data from arrays to objects and from objects to arrays.
Tests | Releases | Downloads |
---|---|---|
What does this thing do?
A hydrator is an object capable of extracting data from other objects, or filling them with data.
A hydrator performs following operations:
- Convert
Object
toarray
- Put data from an
array
into anObject
GeneratedHydrator uses proxying to instantiate very fast hydrators, since this will allow access to protected properties of the object to be handled by the hydrator.
Also, a hydrator of GeneratedHydrator implements Laminas\Hydrator\HydratorInterface
.
Installation
To install GeneratedHydrator, install Composer and issue the following command:
Usage
Here's an example of how you can create and use a hydrator created by GeneratedHydrator:
Performance comparison
A hydrator generated by GeneratedHydrator is very, very, very fast.
Here's the performance of the various hydrators of Laminas\Hydrator
compared to a hydrator built
by GeneratedHydrator:
This will produce something like following:
As you can see, the generated hydrator is 20 times faster than Laminas\Hydrator\Reflection
and Laminas\Hydrator\ArraySerializable
, and more than 90 times faster than
Laminas\Hydrator\ClassMethods
.
Tuning for Production
By default, GeneratedHydrator will generate hydrators on every new request. While this is relatively fast, it will cause I/O operations, and you can achieve even better performance by pre-generating your hydrators and telling your application to autoload them instead of generating new ones at each run.
Avoiding regeneration involves:
- pre-generating your hydrators
- ensuring that your autoloader is aware of them
The instructions that follow assume you are using Composer.
Pre-generating your hydrators
There is no built-in way to bulk-generate all required hydrators, so you will need to do so on your own.
Here is a simple snippet you can use to accomplish this:
Just add all the classes for which you need hydrators to the $classes
array,
and have your deployment process run this script.
When complete, all of the hydrators you need will be available in /path/to/target-dir
.
Making the autoloader aware of your hydrators
Using your pre-generated hydrators is as simple as adding the generation target
directory to your composer.json
:
After generating your hydrators, have your deployment script run composer dump-autoload
to regenerate your autoloader.
From now on, GeneratedHydrator
will skip code generation and I/O if a generated class already
exists.
Fallback autoloader
Alternatively, GeneratedHydrator
comes with a built-in autoloader that you can register
on your own. This simplifies deployment, but is a bit slower:
Contributing
Please read the CONTRIBUTING.md contents if you wish to help out!
All versions of generated-hydrator with dependencies
laminas/laminas-hydrator Version ^4.14.0
nikic/php-parser Version ^4.16.0
ocramius/code-generator-utils Version ^1.7.0