[Résolu] PHPcs : warning sur fonction func_get_args()

Bonsoir,

Un de mes plugins gère entre autres choses un objet éditorial nouveau et voit son fichier formulaires/editer_station.php faire remonter ce message lorsque je le passe à PHPcs en utilisant SPIP40 comme standard :

FILE: /home/bbrice/webdev/spip41/plugins/precipitations/core/formulaires/editer_station.php
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
FOUND 0 ERRORS AND 1 WARNING AFFECTING 1 LINE
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 123 | WARNING | Since PHP 7.0, functions inspecting arguments, like func_get_args(), no longer report the original value as passed to a parameter, but will instead
     |         | provide the current value. The parameter "$id_station" was used, and possibly changed (by reference), on line 121.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Le code incriminé:

function formulaires_editer_station_charger_dist($id_station = 'new', $retour = '', $lier_trad = 0, $config_fonc = '', $row = [], $hidden = '') {
	$valeurs = formulaires_editer_objet_charger('station', $id_station, '', $lier_trad, $retour, $config_fonc, $row, $hidden);

	$valeurs['saisies'] = call_user_func_array('formulaires_editer_station_saisies_dist', func_get_args());
	return $valeurs;
}

Il me semble me souvenir que cet objet éditorial avait été initié grâce à la Fabrique et que ce code en est directement issu.

Quelle approche privilégier pour éviter ce warning ?

Merci !

Je crois que tu peux retirer toute la ligne $valeurs['saisies'], cette valeur est ajoutée automatiquement dans le charger par Saisies en principe (et il manque le souligné en plus : _saisies).

Il me semblait que la coquille avait été corrigée dans la Fabrique, si c’est pas le cas c’est à faire.

et sinon… en php récent

- call_user_func_array('formulaires_editer_station_saisies_dist', func_get_args());
+ formulaires_editer_station_saisies_dist(...func_get_args());

Même si le message d’erreur resterait le même avec l’appel à func_get_args() mais je ne comprends pas où il voit un passage par référence pour $id_station (formulaires_editer_objet_charger() n’en a aucun d’indiqué non plus)

Ouais dans tous les cas ce code n’a aucun sens si ton form est fait en Saisies PHP (ce qui a l’air d’être le cas).


RastaPopoulos

Effectivement, le formulaire est généré via des Saisies PHP :slight_smile:

Merci beaucoup à tous !