PHP code example of w2w / apie-object-access-normalizer
1. Go to this page and download the library: Download w2w/apie-object-access-normalizer library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
w2w / apie-object-access-normalizer example snippets
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Normalizer\ArrayDenormalizer;
use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
use Symfony\Component\Serializer\Serializer;
use W2w\Lib\ApieObjectAccessNormalizer\Normalizers\ApieObjectAccessNormalizer;
use W2w\Lib\ApieObjectAccessNormalizer\ObjectAccess\ObjectAccess;
$serializer = new Serializer(
[
new DateTimeNormalizer(),
new ApieObjectAccessNormalizer(),
new ArrayDenormalizer(),
],
[new JsonEncoder()]
);
class Example
{
private $number;
private $stringValue = '<no value set>';
public function __construct(int $number)
{
$this->number = $number;
}
public function setStringValue(string $stringValue)
{
$this->stringValue = $stringValue;
}
public function getNumber(): int
{
return $this->number;
}
public function getStringValue(): string
{
return $this->stringValue;
}
}
$instance = new Example(12);
// returns array['number' => 12, 'stringValue' => '<no value set>']
var_dump($serializer->serialize($instance, 'json'));
// returns new Example(12)
var_dump($serializer->deserialize(['number' => 12], Example::class, 'json'));
// throws validation error with errors => ['number' =>' must be one of "int" ("invalid" given)']
$serializer->deserialize(['number' => 'invalid'], Example::class, 'json');
// calls setStringValue("blah") on $instance
$serializer->deserialize(['stringValue' => 'text'], Example::class, 'json', ['object_to_populate' => $instance]);
// use a different object access on $instance to set private properties that have no public setter.
$serializer->deserialize(['number' => '15'], Example::class, 'json', ['object_to_populate' => $instance, 'object_access' => new ObjectAccess(false)]);
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter;
use Symfony\Component\Serializer\Normalizer\ArrayDenormalizer;
use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
use Symfony\Component\Serializer\Serializer;
use W2w\Lib\ApieObjectAccessNormalizer\Normalizers\ApieObjectAccessNormalizer;
use W2w\Lib\ApieObjectAccessNormalizer\ObjectAccess\ObjectAccess;
$serializer = new Serializer(
[
new DateTimeNormalizer(),
new ApieObjectAccessNormalizer(new ObjectAccess(), new CamelCaseToSnakeCaseNameConverter()),
new ArrayDenormalizer(),
],
[new JsonEncoder()]
);
$instance = new Example(12);
// returns array['number' => 12, 'string_value' => '<no value set>']
var_dump($serializer->serialize($instance, 'json'));
use Illuminate\Database\Eloquent\Model;
use W2w\Laravel\LaravelApie\ObjectAccess\EloquentModelAccess;
use W2w\Lib\ApieObjectAccessNormalizer\ObjectAccess\GroupedObjectAccess;
use W2w\Lib\ApieObjectAccessNormalizer\ObjectAccess\ObjectAccess;
use W2w\Lib\ApieObjectAccessNormalizer\ObjectAccess\SelfObjectAccess;
use W2w\Lib\ApieObjectAccessNormalizer\ObjectAccess\SelfObjectAccessInterface;
$objectAccess = new GroupedObjectAccess(
new ObjectAccess,
[
// For SomeClass we can read private properties/getters
SomeClass::class => new ObjectAccess(false, true),
// for any class that implements SelfobjectAccessInterface we use SelfObjectAccess
SelfObjectAccessInterface::class => new SelfObjectAccess(),
// does not exist in this package, just an example. Eloquent models are notorious for the amount of magic.
Model::class => new EloquentModelObjectAccess(),
]
);
namespace Wrwr;
class ObjectWithLocalization
{
private $pizzas = [];
public function setPizza(string $locale, string $preference)
{
$this->pizzas[$locale] = $preference;
}
public function getPizza(string $locale)
{
return $this->pizzas[$locale];
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.