[GraphQL] Introduce ArgumentParameter for first-class GraphQL schema argument metadata
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Da chiarire
- Stato di attività
- Tranquilla
- Stack tecnologico
- php
- Ambito
- api, backend-api-design
Direzione di ricerca
Inizia da src/GraphQl/Type/FieldsBuilder.php e confronta getFilterArgs() con getParameterArgs(), quindi segui le factory dei metadati e gli estrattori delle risorse menzionati nell’issue. Il lavoro è completato quando lo schema GraphQL dispone di una sorgente basata su ArgumentParameter e di un passaggio per la costruzione degli argomenti, e i percorsi interessati relativi agli attributi PHP, XML, YAML e alla documentazione sono stati aggiornati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Context
src/GraphQl/Type/FieldsBuilder.php builds GraphQL arguments from two parallel sources today:
- Legacy
Operation::getFilters()(list of string filter ids) →getFilterArgs(). - Modern
Operation::getParameters()(QueryParametercollection) →getParameterArgs().
Both paths walk FilterInterface::getDescription(), normalize bracketed keys via parse_str, and emit InputObjectType trees — with different output shapes and divergent edge-case handling (see also #7953-adjacent bug around bracketed keys + object-form filters).
Proposal
Introduce an ArgumentParameter (working name) — a metadata-layer concept that marks "this parameter participates in the GraphQL schema" as first-class. FieldsBuilder then has a single source of truth and a single argument-building pass, instead of two divergent paths.
Sketch:
- A dedicated parameter subtype, or an explicit
graphQl: true|ArgumentDescriptorflag onQueryParameter. Operation::getFilters()is normalized into syntheticArgumentParameters for GraphQL, deprecating the dual code path insideFieldsBuilder.FieldsBuilderonly consumesArgumentParameters.
Scope
- 4.4 / 5.0 — not a backport-friendly change.
- Touches metadata factories, schema builder, probably the resource extractors (PHP attribute / XML / YAML), and docs.
Why a note, not a plan
This issue exists so the idea is tracked. Real design happens later; the 4.3 branch only does the surgical bug fix + helper extraction.
- Lingua principale
- PHP
- Stelle
- 2.6k
- Fork
- 982
- Merge medio
- 1g 16h
- PR unite (30g)
- 59
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di api-platform/core
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
api-platform/core#8573 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
api-platform/core#8571 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
api-platform/core#8564 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
api-platform/core#8495 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
api-platform/core#8471 ·
Tutte le issue di api-platform/core
Issue simili
-
Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
Automattic/safe-publish#594 ·
-
HttpClient
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
symfony/symfony-docs#23092 ·
-
sync-en
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
-
sync-en
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 95/100
-
Перевод устарел
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100