Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork9.6k
[Serializer] Support serialized names and paths configuration per group#58236
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:7.4
Are you sure you want to change the base?
Uh oh!
There was an error while loading.Please reload this page.
Conversation
carsonbot commentedSep 11, 2024
Hey! I see that this is your first PR. That is great! Welcome! Symfony has acontribution guide which I suggest you to read. In short:
Review the GitHub status checks of your pull request and try to solve the reported issues. If some tests are failing, try to see if they are failing because of this change. When two Symfony core team members approve this change, it will be merged and you will become an official Symfony contributor! I am going to sit back now and wait for the reviews. Cheers! Carsonbot |
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
*/ | ||
public function __construct(string $serializedPath) | ||
public function __construct(string $serializedPath, string|array $groups = []) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
publicfunction __construct(string$serializedPath,string|array$groups = []) | |
publicfunction __construct(string$serializedPath,string|array$groups = ['*']) |
And then we can check that$groups
is not empty
(same forSerializedName
)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
What should we do in case$groups
is empty? Throw exception or fall back to['*']
?
(BTW, I've implemented second option).
src/Symfony/Component/Serializer/Mapping/Loader/AttributeLoader.php OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
src/Symfony/Component/Serializer/NameConverter/MetadataAwareNameConverter.phpShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
…y in serialized name/path setters
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Massive work in this PR, wow 👍 Thank you!
I added some comments
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
$groups = $line['groups'] ?? []; | ||
if ($serializedName = $line['serialized_name'] ?? false) { | ||
if (!\is_string($serializedName) || '' === $serializedName) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
What about' '
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Could you please elaborate? Do I need to trim string and then check for emptiness? Or just check for single space? What's the point?
src/Symfony/Component/Serializer/Tests/Mapping/Loader/YamlFileLoaderTest.phpShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
src/Symfony/Component/Serializer/Tests/NameConverter/MetadataAwareNameConverterTest.php OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
src/Symfony/Component/Serializer/Tests/NameConverter/MetadataAwareNameConverterTest.php OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
src/Symfony/Component/Serializer/Tests/NameConverter/MetadataAwareNameConverterTest.php OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
src/Symfony/Component/Serializer/Tests/NameConverter/MetadataAwareNameConverterTest.php OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
{ | ||
try { | ||
$this->serializedPath = new PropertyPath($serializedPath); | ||
} catch (InvalidPropertyPathException $pathException) { | ||
throw new InvalidArgumentException(\sprintf('Parameter given to "%s" must be a valid property path.', self::class)); | ||
} | ||
$this->groups = ((array) $groups) ?: ['*']; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I'm not sure that we must fall back to['*']
here, maybe an empty array can be valid in some cases (same forSerializedName
)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I've tried that but it led to more failing tests. So I reverted it back until we decide what it could actually mean, so we could change the tests.
In my point of view, empty array here is nonsense, as it means "apply serialized name/path tono groups".
As alternative to fallback to['*']
, we can throw exception. WDYT?
Uh oh!
There was an error while loading.Please reload this page.
src/Symfony/Component/Serializer/Mapping/AttributeMetadataInterface.php OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
src/Symfony/Component/Serializer/NameConverter/MetadataAwareNameConverter.phpShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
# Conflicts:#src/Symfony/Component/Serializer/CHANGELOG.md#src/Symfony/Component/Serializer/Mapping/Loader/AttributeLoader.php
# Conflicts:#src/Symfony/Component/Serializer/NameConverter/MetadataAwareNameConverter.php
Uh oh!
There was an error while loading.Please reload this page.
At the moment some of my own
MetadataAwareNameConverter
tests are failing. I have tried to fix them, but everything I tried so far breaks existing tests. Just can't figure out what I have to do. Any help would be greatly appreciated!