critere conditionnel et passage de paramètre avec nom du paramètre forcément en minuscule

Dans le cadre d’un boucle avec le critère conditionnel {critère ?}, je viens de découvrir qqc de curieux.
Un exemple sera plus parlant :

#SET{fruits, #ARRAY{0, #ARRAY{FruiT, Banane, provenance, Costa Rica}, 1, #ARRAY{FruiT, Pomme, provenance, France} }
<INCLURE{fond=inclure/afficher_fruits, data=#GET{fruits}, FruiT=Banane}>

et dans mon fichier /inclure/afficher_fruits.html

<BOUCLE_fruits(DATA){source tableau, #DATA}{FruiT?}>
	<p>[(#VALEUR{FruiT}) ](provenance #VALEUR{provenance})</p>
</BOUCLE_fruits>

Comme ça la boucle ne prend pas en compte le paramètre passé par l’inclusion et affiche tous les fruits.

Mais si je change la casse du paramètre, c’est à dire je passe le nom du paramètre en minuscule FruiT → fruit)

…
<INCLURE{fond=inclure/afficher_fruits, data=#GET{fruits}, fruit=Banane}>

le paramètre conditionnel est pris en compte.

Quid ?

Intéressant, ça écrit

	$command['where'] = 
			array((!is_whereable(($Pile[0]['fruit'] ?? null)) ? '' : ((is_array(($Pile[0]['fruit'] ?? null))) ? sql_in('FruiT', $in) : 
			array('=', 'FruiT', sql_quote(($Pile[0]['fruit'] ?? null), '','')))));
  • On voit qu’il cherche ‹ fruit › dans l’environnement, en minuscule…
  • Et ça vient explicitedement de index_pile() qui appelle strtolower sur le nom du champ…
	if (!is_string($defaut)) {
		$defaut = '($Pile[0][\'' . strtolower($nom_champ) . '\'] ?? null)';
	}

C’est vrai que comme ça ça parait farfelu…

Je fais un ticket ?