Download the PHP package radebatz/object-mapper without Composer
On this page you can find all versions of the php package radebatz/object-mapper. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download radebatz/object-mapper
More information about radebatz/object-mapper
Files in radebatz/object-mapper
Package object-mapper
Short Description (Json) Object mapper.
License MIT
Homepage http://radebatz.net/mano/
Informations about the package object-mapper
(JSON) object mapper
A simple library to deserialize JSON into (nested) PHP arrays / objects.
Requirements
Installation
You can use Composer or simply Download the Release
Composer
The preferred method is via composer. Follow the installation instructions if you do not already have composer installed.
Once composer is installed, execute the following command in your project root to install this library:
Usage
Simple model using getXXX()/setXXX()
Value union using interface
$objectMapper->addValueTypeResolver(
new class() implements ValueTypeResolverInterface {
public function resolve($className, $json): ?string
{
if (is_object($json) && PopoInterface::class == $className) {
if (property_exists($json, 'foo')) {
return AnotherPopo::class;
}
return SimplePopo::class;
}
return null;
}
}
);
Configuration
The ObjectMapper
class takes an array (map) as first constructor argument which allows to customise the behaviour when mapping data.
All option names (keys) are defined as class constants.
OPTION_STRICT_TYPES
Enforces strict type checking on build in data types (excluding array
).
Default: true
OPTION_STRICT_COLLECTIONS
Enforces strict type checking on arrays.
Default: true
OPTION_STRICT_NULL
Enforces strict check on null
value assignments.
Default: true
OPTION_IGNORE_UNKNOWN
Enable/disable reporting unmapped properties (will throw ObjectMapperException
).
Default: true
OPTION_VERIFY_REQUIRED
If enabled check if all properties with a @required
annotation have been mapped (will throw ObjectMapperException
).
Default: false
OPTION_INSTANTIATE_REQUIRE_CTOR
If disabled, object instantiation will fall back to ReflectionClass::newInstanceWithoutConstructor()
if a regular new $class()
fails.
Futhermore, if set it will enforce a constructor argument check in case a scalar
is deserialized into an object.
Default: true
OPTION_UNKNOWN_PROPERTY_HANDLER
Optional callable to handle unknown/unmappable properties. Signature:
The return value is epected to be either a property name or null
.
Default: null
OPTION_VARIADIC_SETTER
If enabled, setting list values will allow variadic parameters on models (requires 5.2 >= PropertyAccess
).
The return value is expected to be either a property name or null
.
Default: false
Testing
This package is inspired by the excellent jsonmapper package. In order to evaluate its features, the tests folder contains an adapter that lets you run the test suite agaist the codebase.
For this you run:
Not all tests pass as this library support also, for example, mapping scalar values. As it stands the result of running the tests is:
The tests use a custom JsonMapper
class that internally uses the ObjectMapper
.
All versions of object-mapper with dependencies
ext-json Version *
psr/log Version ^1.0
radebatz/property-info-extras Version ^1.1
symfony/property-access Version ^4.0|^5.0
symfony/property-info Version >=4.4.17|>=5.1.3