Add groups extension - #211
Open
DavidBadura wants to merge 1 commit into
Open
DavidBadura wants to merge 1 commit into
DavidBadura wants to merge 1 commit into
Conversation
|
Hello 👋 here is the most recent benchmark result:
This comment gets update everytime a new commit comes in! |
Properties can be assigned to groups with the new Groups attribute and selected or excluded per call via the groups and ignored_groups context keys. Filtering applies to extract and hydrate and is passed on to nested objects.
DavidBadura
force-pushed
the
groups-extension
branch
from
October 2, 2026 21:04
4c7f496 to
9282433
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This adds a GroupsExtension for serialization groups. Properties are tagged with the new
#[Groups]attribute and the groups are selected per call withGroupsExtension::GROUPSin the context.GroupsExtension::IGNORED_GROUPSdoes the opposite and excludes properties of the given groups.Without groups in the context everything is used, once groups are selected properties without the attribute are left out, and
*selects everything. The context is passed on, so nested objects are filtered as well, which also allows breaking circular references by putting the back reference into another group.On extract the middleware hands a filtered
ClassMetadatato the next middleware, so excluded properties are never read. On hydrate it drops the excluded fields from the data, so promoted defaults still apply. Filtered metadata is cached per class and group selection, and the middleware returns early when no groups are in the context.