Dotclear › Blabla

04/06/2022

getExtension

Cela fait quelques jours que je me cache et ce n'est pas une pause. Je me suis lancé dans la relecture de 3 classes similaires qui sont Blogs, Posts et Comments, et je dois dire que je ne m'attendais pas à un telle cascade de modifications ! 

J'ai commencé à utiliser les arguments nommés de PHP de partout, et même si c'est lourd et répétitif ça me permet de vérifier, corriger, optimiser tout ce que je passe aux méthodes, spa mal du tout finalement. J'ai également commencé à modifier les behaviors avec une nomination strict et un appelle aux arguments nommés également ici. C'est étrange car on appelle des méthodes inconnues mais avec des noms d'arguments connus. Mais idem ça permet de tout de suite savoir ce qu'il se passe. Enfin j'ai commencé une petite classe pour permettre dans le futur l'ouverture des statuts, pour l'instant ça ne sert qu'a l'affichage des statuts de billets, commentaires, blogs.

Tout ça me plait, même si je suis qu'au tout début de cette phase.

22/05/2022

getProperties

Ca y est cette fois, j'ai tout cassé. Toujours à fond sur la branche namespace de dotclear, je continue de me lâcher, pas moins de 70 fichiers modifié juste pour un changement qui n'en est pas un. J'aime

La solution retenu pour supprimer ces ArrayObject est de passer une petite classe à toutes les méthodes faisant des requêtes complexes sur la base. L'avantage est de retourner un type de propriété connu, propriété qui sera nettoyé avant requête, ça évite les plantages mais pas les erreurs car un type ne correspondant pas sera tout simplement ignoré et donc on aura un résultat pas forcément attendu. L'autre avantage et que les filtres de liste étaient prêt pour ça ! (Promis je l'avais pas fait exprès) L'inconvénient est que ça rajoute du code, pour le coup je ne suis pas encore satisfait de cette solution. M'enfin c'est comme souvent, nouvelle idée, rajout de code, optimisation, réduction de code. J'arrive à stabiliser à peu prêt la légèreté (lourdeur?) de l'ensemble.

PS: J'en ai profité pour commencer à uniformiser l'aspect de ces méthodes (getPosts, getUsers, getComments, getLog, etc...) Elles ont désormais toutes la même signature et ça, ça me plait !

20/05/2022

getModifiers

Pour continuer sur ma lancé d'hier, voici quelques constats du moment.

Hier je parlais des ArrayObject, sorte de fourre-tout sans nom et sans type. Un exemple de son utilisation est le passage de paramètres aux méthodes qui servent à faire des requêtes sur la base de données. On les traites à coup de tests pour savoir si une propriété des paramètres est vide, est un tableau, et un tableau d'entier, etc... Je me suis dis, tiens bonne occasion de passer par une mini class qui permette de faire ça.

On crée une instance d'un class Param, on lui balance tous les paramètres qu'on veut, et ensuite la class qui gère les requêtes sur la base transforme Param à sa guise pour avoir en retour toujours le bon type de paramètres. Bon. Ca fonctionne. Mais ça utilise une class générique (Param), une classe par type de requête (LogParam, NoticeParam, UserParam, etc...) ce n'est pas plus court, ce n'est pas plus lisible (enfin si mais c'est plus long). Bref, je ne sais pas si je garde ça…

Tiens, au passage, j'ai essayé de me passer de ce Param et d'utilisé uniquement les sqlStatement déjà présent dans quelques class et qui devront à terme être présent partout. Ben ce n'est pas possible car il est quasi impossible de savoir ce qu'on a déjà mis dedans (on a parfois besoin de modifier un paramètre déjà existant ou de le tester pour ajouter une autre options) et on ne peut pas nom plus passer un SelectStatement a deux requêtes consécutives (ou alors peut-être avec un clone mais ça va devenir compliqué) car si on ajoute par exemple un ->from() dans le première requête, il se retrouve dans la seconde alors qu'on l'y ajoute aussi (cette deuxième requête pouvant être faite sans la première)

Bref, j'ai mal à la tête et je n'arrive pas encore à la bonne solution.

18/05/2022

getAttributes

Comme je ne blogue carrément pas assez, je viens de créer une sous catégorie Blabla Dotclear, qui me permettra d'écrire d'ultra court billet pour simplement énoncer par écrit une pensée éphémère sur ce que je bricole à un instant T.

Donc pour inaugurer ce lieu, je vais juste poser à l'arrache deux interrogations du jour de la semaine :

  • Les ArrayObject ne me plaisent pas, dois-je tous les remplacer par de petits objets dédiés à une tache précise ? J'ai déjà testé en local sur le passage des paramètres aux requêtes tels que getPosts, ce n'est ni plus court, ni plus long, ni plus lisible, mais ça a le mérite de toujours renvoyer le bon typage de variable.
  • Les RsExtXxx sont impossibles à tracer/typer (ce n'est pas totalement vrai mais j'ai dis que je faisait court), qu'est ce que je pourrais inventer pour y remédier tout en restant aussi simple d'utilisation ?
Voila c'est tout pour aujourd'hui.

Haut de page