La génance est perceptible

Sur les rives du lac de Garde, août 2022
Sur les rives du lac de Garde

Il y a un truc sur lequel je coince, depuis que j’ai fait sauté la variable $core, c’est le fait que depuis, le passage de cette variable dans les fonctions et méthodes appelées n’est plus requis, et ça fait désordre, je trouve.

Sauf que…

Sauf que changer la « signature » 1 d’une fonction ou d’une méthode fout le dawa dans tout le code existant ! Spécialement via le système de behavior (points d’entrée) présent un peu partout dans Dotclear, système où il était plus que fréquent de fournir dans l’un des paramètres (souvent le premier d’ailleurs ce qui complique encore plus, ou pas finalement) la variable obsolète en question.

Il faudrait éventuellement imposer le passage à PHP 8 et utiliser alors le système des arguments nommés, mais je pense que ça casserait quand même des trucs…

Une autre solution serait de « doubler » les appels avec une forme modernisée des behaviors (probablement en ajoutant un numéro de version dans leur nom, comme pour un changement d’API), mais ça implique pas mal de code en plus du côté des appels avec l’avantage toutefois de permettre une transition en douceur. Exemple :

    # --BEHAVIOR-- adminBlogPreferencesForm
    dcCore::app()->callBehavior('adminBlogPreferencesForm', dcCore::app(), $blog_settings);

On pourrait passer à ceci :

    # --BEHAVIOR-- adminBlogPreferencesForm
    dcCore::app()->callBehavior('adminBlogPreferencesForm', dcCore::app(), $blog_settings);
    dcCore::app()->callBehavior('adminBlogPreferencesFormV2', $blog_settings);

Libre au code appelé de l’être sur la 1re ou 2e forme, avec ou sans le dcCore::app() qui ne sert à rien.

Avec le risque, dans un futur un peu plus lointain, de changer encore la signature des fonctions appelées et d’ajouter une V3, puis une V4, etc etc…

Bref ce n’est pas simple !

À ce stade, la 2.23 publiée récemment ne casse rien de l’éco-système existant, pas plus d’ailleurs que la 2.24 ne devrait le faire, je pense ; je m’interroge cependant pour la suite…

Si vous avez des idées ou remarques à ce sujet, elles sont bien évidemment les bienvenues !


  1. La signature d’une fonction (ou méthode) décrit la liste des paramètres et leur ordre, parfois même leurs types. ↩︎

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/15445

Haut de page