Toujours en train de casser Clearbricks, comme promis, et il y a bien un truc qui m’agace c’est l’usage de type de retour variés dans une seule et même fonction (ou méthode).
Exemple pris dans la classe record, classe qu’on utilise copieusement dans tout Dotclear :
/**
* Returns the current index position (0 is first) or move to <var>$row</var> if
* specified.
*
* @param int $row Row number to move
*
* @return int|boolean
*/
public function index(?int $row = null)
{
if ($row === null) {
return $this->__index === null ? 0 : $this->__index;
}
if ($row < 0 || $row + 1 > $this->__info['rows']) {
return false;
}
if ($this->__info['con']->db_result_seek($this->__result, (int) $row)) {
$this->__index = $row;
$this->setRow();
$this->__info['con']->db_result_seek($this->__result, (int) $row);
return true;
}
return false;
}
Cette méthode peut renvoyer un entier ou un booléen (vrai ou faux), c’est ensuite à l’appelant de s’occuper de faire la distinction entre les types de retour fournis.
Autant je conçois que ça peut simplifier le code autant je trouve que ça complexifie la maintenance, surtout avec du code ancien.
C’est un des gros défauts de PHP, je trouve, et même si version après version on se dirige vers un typage fort, on y est pas encore !
PS : Je sais, cette méthode fait plusieurs choses et elle ne devrait pas, à mon humble avis, mais je ne vais pas tout ré-écrire :-p
1 De Jean-Christian Paul Denis -
J’ai passé 6 mois à typer dotclear et clearbricks sur la branche ns… Faut tout refaire si tu veux être propre.
2 De Franck -
Oui je sais, ça dépasse de loin l’évolution possible de la branche 2.x de Dotclear !
Par contre, de ton côté, fais-toi plaisir sur la 3.0, y’a de quoi jouer :-)
3 De Jean-Christian Paul Denis -
Comme tu as pu le voir, j’ai quelques impératifs très chronophages en ce moment 😥
Et rien que de penser à toutes les modifications de la 2.x qui va falloir que je reporte dans la branche ns, ça me déprime.
Mais sinon oui, cette branche est faites pour ça !