Questionnement sur le pipeline formulaire_charger

J’ai eu un petit problème sur l’utilisation du pipeline formulaire_charger appelé dans le cadre du formulaire instituer_objet.

la fonction formulaire__charger() commence comme suit:

	if ($charger_valeurs = charger_fonction('charger', "formulaires/$form", true)) {
		$valeurs = $charger_valeurs(...$args);
	} else {
		$valeurs = [];
	}

	$valeurs = pipeline(
		'formulaire_charger',
		[
			'args' => ['form' => $form, 'args' => $args, 'je_suis_poste' => $poste],
			'data' => $valeurs
		]
	);

De son coté, la fonction de chargement du formulaire instituer_objet peut renvoyer comme valeurs (variable $valeurs) soit un tableau chargé, soi un tableau vide soit false en cas d’erreur ou d’absence de statut.

En fait, j’aurais plutôt pensé que l’appel du pipeline et de la suite du traitement ne soit fait que si la variable $valeurs ne désigne pas une erreur, donc en excluant le cas false. Sinon, on fait reposer sur tous les traitements spécifiques le fait d’écarter les erreurs.

Donc, dans une prochaine version, ne serait-il pas souhaitable réserver la valeur false aux erreurs et de ne pas appeler le pipeline dans ce cas ?

1 « J'aime »

J’ai mis du temps. Là tu parle du cas où l’on a des ereurd à l’appel du formulaire? oui cela pourrait valoir la peine en effet.

Oui si tu prends le cas du formulaire instituer il fait le test suivant:

	if (!isset($desc['statut_textes_instituer'])) {
		return false;
	}

Donc dans ce cas tu sors avec non pas un tableau de valeurs mais un boolean à false. Dans ce cas, il n’y a aucun intérêt à appeler le pipeline formulaire_charger à mon avis ni à continuer le traitement. On pourrait donc réserver cette valeur false pour dire ne pas continuer ce qui éviterait de s’en préoccuper dans chaque personnalisation du pipeline.

Là on ne parle pas d’un formulaire particulier (qui n’est donné qu’en exemple) mais de la fonction qui gère l’ensemble. Or il me semble un peu présomptueux de pouvoir deviner d’avance tous les mille cas possibles de CVT. Peut-être que pour ce formulaire-ci en particulier ça n’a pas de sens de continuer du tout (et encore j’ai pas réfléchi en détail), mais c’est à peu près certain qu’il y a plein de cas où même si le formulaire d’origine n’a rien à faire « pour l’instant », ça n’empêche en rien que des plugins en pipelines pourraient avoir envie ou besoin de relancer la machine parce que eux veulent ajouter des champs ou des actions à faire.

Absolument, je ne dis pas le contraire. Je dis juste que ce serait pas mal de normaliser le comportement.

Sans vouloir limiter les possibilités, le formulaire charger est censé renvoyer un tableau de valeurs. A partir de là imposer que la valeur false indique une erreur et donc un arrêt de traitement me parait pas une limitation mais plus une normalisation de l’interface.

Il reste toujours le tableau vide pour continuer sans retourner de valeurs.

Mouais, j’ai peur des ruptures. Mon avis c’est que si on met un pipeline c’est qu’on veut pouvoir contourner le comportement par défaut. Et donc un comportement qui dirait « je veux jamais de pipeline » me parait un peu gênant.

Voui c’était un peu mon propos aussi : ce n’est pas aux fonctions d’origine de pouvoir affirmer si c’est utile ou pas de continuer : ce sont aux sous-plugins qui utilisent les pipelines de décider s’ils ajoutent des choses ou pas, quelque soit les cas.

Ben ça s’appelle définir une interface ou un mécanisme ce que l’on fait à chaque fois qu’on écrit une fonction et son prototype.

La proposition est d’instaurer que :

  • si on passe false ça arrête le traitement et donc pas de pipeline
  • sinon on continue avec les valeurs fournies.

Ca ne limite rien car on peut toujours appeler le pipeline.

Amha, il faut relancer le débat dans un ticket.

Est-ce qu’ainsi que c’est comme ça, ça permettrait il pas à un pipeline de dire « ben non je gère la situation et non ya pas d’erreur finalement » ?

Ca peut mais je pense que c’est peu probable.
Mais franchement on va pas se faire des noeuds au cerveau pour ça, on va fermer le fil et oublier la proposition.

Ce pipeline permet donc d’ouvrir à d’autres possibles… y compris des univers parallèles dont on ignore la loi de probabilité.
Mais OK pour « pas se faire des noeuds au cerveau pour ça » car ya assez de soucis dans cet univers ci.