Skip to content

[Serializer] Refactoring and object_to_populate support. #13252

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 7, 2015

Conversation

dunglas
Copy link
Member

@dunglas dunglas commented Jan 4, 2015

Q A
Bug fix? no
New feature? yes
BC breaks? no
Deprecations? no
Tests pass? yes
License MIT
Doc PR n/a

This PR is mainly a refactoring. It move up the common code of PorpertyNormalizer and GetSetMethodNormalizer into AbstractNormalizer.

It also adds a news feature: the ability to use an existing object instance for denormalization:

$dummy = new GetSetDummy();
$dummy->setFoo('foo');

$obj = $this->normalizer->denormalize(
    array('bar' => 'bar'),
    'GetSetDummy',
     null,
     array('object_to_populate' => $dummy)
);

// $obj and $dummy are references to the same object

@dunglas
Copy link
Member Author

dunglas commented Jan 4, 2015

The Travis failure is strange but doesn't seem related with this PR. Any hint @nicolas-grekas?

@fabpot
Copy link
Member

fabpot commented Jan 6, 2015

👍

@fabpot
Copy link
Member

fabpot commented Jan 7, 2015

Thank you @dunglas.

@fabpot fabpot merged commit b5990be into symfony:2.7 Jan 7, 2015
fabpot added a commit that referenced this pull request Jan 7, 2015
…t. (dunglas)

This PR was merged into the 2.7 branch.

Discussion
----------

[Serializer] Refactoring and object_to_populate support.

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT
| Doc PR        | n/a

This PR is mainly a refactoring. It move up the common code of `PorpertyNormalizer` and `GetSetMethodNormalizer` into `AbstractNormalizer`.

It also adds a news feature: the ability to use an existing object instance for denormalization:

```php
$dummy = new GetSetDummy();
$dummy->setFoo('foo');

$obj = $this->normalizer->denormalize(
    array('bar' => 'bar'),
    'GetSetDummy',
     null,
     array('object_to_populate' => $dummy)
);

// $obj and $dummy are references to the same object
```

Commits
-------

b5990be [Serializer] Refactoring and object_to_populate support.
dunglas added a commit that referenced this pull request Mar 6, 2015
This PR was merged into the 2.7 branch.

Discussion
----------

[Serializer] ObjectNormalizer

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| License       | MIT
| Doc PR       | not yet

`PropertyAccessNormalizer` is a new normalizer leveraging the PropertyAccess Component. It is able to handle classes containing both public properties and properties only accessibles trough getters / setters / issers / hassers...

As it extends `AbstractNormalizer`, it supports circular reference handling, name converters and existing object population.
What do you think about making this new normalizer the default one as it's the most convenient to use and the most consistent with the behavior of other components.

#13120, #13252 and #13255 need to be merged to make this PR working.

Commits
-------

0050bbb [Serializer] Introduce ObjectNormalizer
@dunglas dunglas deleted the serializer_abstract_refactoring branch December 5, 2015 09:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants