Je commence à y voir plus clair

Nouvelles lunettes et leurs verres progressifs, déc. 2021
Nouvelles lunettes et leurs verres progressifs

Après avoir poussé le commit d’hier, j’en ai à peu près fini avec le cœur de Dotclear1, reste à faire un tour du côté des plugins et des thèmes et enfin de la partie administration où j’ai quelques idées pour rendre ça un poil plus lisible.

Sans présumer de ce que je vais encore trouver dans ce qu’il me reste à revoir j’ai débusqué quelques petits bugs, ici et là, invisibles tant que les signatures étaient anonymes, c’est-à-dire sans définir les types des arguments et celui de l’éventuel retour2, PHP pouvant être par nature très permissif (faiblement typé) — ce qui a tendance à s’amenuiser avec les versions successives.

En aparté je trouve qu’il manque un objet de type struct comme dans le langage C, qui permettrait de définir une structure typée pour le retour de certaines fonctions, comme par exemple :

struct ret {
    int status;
    ...
};

struct ret fn(struct ret p)
{
    struct ret r = p;
    return r;
}

Mais bon, on en est pas à ce stade3 et ça casserait encore plus l’éco-système existant, déjà que … :-D

Cela dit on pourrait imaginer utiliser la destructuration de tableau4 dès maintenant, du genre :

function myFn()
{
    $values = [1, 2, 3];

    return [
        'status' => true,
        'values' => $values,
    ];
}

[
    'status' => $status,
    'values' => $table
] = myFn();

Sinon je vais peut-être faire quelques tests pour essayer de mieux comprendre l’intérêt de ce code de protection au début de certains fichiers de Dotclear…

C’est bien, je trouve, de remettre en cause le code dont on a hérité, même s’il faut le faire de façon humble ; je suis loin d’être omniscient même si je commence à bien connaître tout le code de Clearbricks et Dotclear. Par ailleurs il n’est pas toujours simple de se replacer dans le contexte de l’époque, avec un PHP 55 tout neuf et une grosse base de serveurs qui tournaient avec PHP 4 ; ça a bien bougé depuis !

Au passage je me demande s’il n’y a pas moyen, tout en restant rétro-compatible autant que faire se peut, de converger vers la branche 3.0 de JcDenis — y’a énormément de taf, mais qui sait…

PS : Il y a plein de trucs intéressants sur cette page RFC de PHP ;-)


  1. Il reste encore un peu de flou côté signature de certaines méthodes, mais dans l’ensemble c’est assez satisfaisant. ↩︎

  2. J’en ai déjà causé ici ; je trouve qu’il y a beaucoup de fonction qui retournent des valeurs de type différent selon le cas et je trouve ça gênant, j’y reviendrai surement plus tard. ↩︎

  3. Même s’ils en causent pour le futur de PHP. ↩︎

  4. C’est disponible depuis PHP 7.1. ↩︎

  5. PHP 5 est sorti un peu moins d’un an après la version 1.0-rc1 de Dotclear 1 (le 13 août 2003) ! ↩︎

Ajouter un commentaire

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/15474

Haut de page