Type les callbacks en Closure plutôt qu'en callable#15
Open
gototog wants to merge 1 commit into
Open
Conversation
callable n'étant pas un type de propriété valide, les cinq propriétés qui
stockaient un callback (Column::$value, Column::$sortableQuery,
Filter::$callback, GridBuilder::$rowAttributesCallback et
Grid::$rowAttributesCallback) étaient non typées : le type était vérifié à
l'entrée puis perdu au stockage.
Les typer en Closure supprime aussi les is_callable() qui départageaient les
unions string|callable. Sur sortableQuery, cette distinction était un piège :
is_callable('date') vaut true, donc une colonne déclarée sortableQuery: 'date'
serait partie dans la branche callback au lieu d'être triée. Le DQL étant en
pratique toujours préfixé (c.date), le cas ne s'est jamais produit.
BC break : les callables autres que des Closure ([$objet, 'methode'],
'nom_de_fonction') ne sont plus acceptés par addColumn(), addFilter(),
setRowAttributesCallback() ni par les constructeurs de Column, Filter et Grid.
Les envelopper avec Closure::fromCallable() ou la syntaxe first-class
$callback(...).
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.
callable n'étant pas un type de propriété valide, les cinq propriétés qui stockaient un callback (Column::$value, Column::$sortableQuery, Filter::$callback, GridBuilder::$rowAttributesCallback et Grid::$rowAttributesCallback) étaient non typées : le type était vérifié à l'entrée puis perdu au stockage.
Les typer en Closure supprime aussi les is_callable() qui départageaient les unions string|callable. Sur sortableQuery, cette distinction était un piège : is_callable('date') vaut true, donc une colonne déclarée sortableQuery: 'date' serait partie dans la branche callback au lieu d'être triée.
BC break : les callables autres que des Closure ([$objet, 'methode'], 'nom_de_fonction') ne sont plus acceptés par addColumn(), addFilter(), setRowAttributesCallback() ni par les constructeurs de Column, Filter et Grid. Les envelopper avec Closure::fromCallable() ou la syntaxe first-class $callback(...).