Erreur suite a un changement de fonction

Hello,
J’ai une erreur suite a un changement de fonction dans le core, je voulais donc savoir si c’etait normal.
Et si c’est le cas, il y a un moyen d’être compatible pour les alpha et pour les stable V4 ?

Voici les log de l’erreur :

0000|[Thu Jan 14 01:56:29.810422 2021] [php7:warn] [pid 1017] [client 192.168.1.140:63153] PHP Warning:  Declaration of discordlinkCmd::getWidgetTemplateCode($_version = 'dashboard', $_noCustom = false) should be compatible with cmd::getWidgetTemplateCode($_version = 'dashboard', $_clean = true, $_widgetName = '') in /var/www/html/plugins/discordlink/core/class/discordlink.class.php on line 495, referer: http://192.168.1.35/index.php?v=d&p=scenario&id=14
0001|[Thu Jan 14 01:56:49.806180 2021] [php7:warn] [pid 1017] [client 192.168.1.140:63153] PHP Warning:  Declaration of discordlinkCmd::getWidgetTemplateCode($_version = 'dashboard', $_noCustom = false) should be compatible with cmd::getWidgetTemplateCode($_version = 'dashboard', $_clean = true, $_widgetName = '') in /var/www/html/plugins/discordlink/core/class/discordlink.class.php on line 495, referer: http://192.168.1.35/index.php?v=d&p=scenario&id=14

Cordialement
Thibaut

1 « J'aime »

C’est quoi ce param ?? Il est pas en 4.0 ni en 4.1

Et pourquoi redéfinir la même fonction ?

Hello,
Je m’en sert comme plusieurs autre plugin pour faire des actions custom dans les scénarios.

C’est un code que j’ai récupéré auprès des 2 personnes suivantes.

Je sait que @sigalou et @nebz son tu dans le même cas.

Cordialement
Thibaut

Enlève ton 2em param alors, çà ne correspond à rien

nan pas moi :wink:
image

par contre il existe bien dans le core mais s’appelle $_clean :

c’est le troisième param que vous devez ajouter à vos overrides

Hello, j’ai mis ton nom car c’est dans Alexa api

Cdt
Thibaut

les widgets c’est la popotte de @sigalou

mais comme vous appellez parent et que cmd::getWidgetTemplateCode a maintenant une signature à 3 parametres il faut mettre à jour vos fonctions.

Non la fonction du core en 4.0 et 4.1 n’a qu’un seul param version
la 4.2 a deux nouveaux params, définit par default

le $_nocustom ne correspond à rien pour le core 4.x

pas en alpha

par contre peu importe le nom du param pour la signature (et son message d’erreur), juste le nombre de param importe.

mais il peut faire un test de version et en fonction que ca soit 4.0 4.1 ou alpha 4.2 faire un call à parent:: différent… mais ca devient lourd

Oui c’est ce que je dis, deux nouveaux params en alpha. mais ils sont settés par default pas besoin de les mettre.

si, dans le cas d’un override dans la class enfant, la déclaration de la methode doit avoir la même signature

donc difficile de rendre le même code compat 4.0 4.1 et 4.2… (pas de condition pour créer la déclaration de la methode)

Alors pourquoi çà ne pose pas de probleme en 4.0 et 4.1 qui n’ont qu’un seul param sur cette fonction alors que ce plugin l’appel avec deux params ?

en 3.x (branch master) elle en a 2, ils ont peut-etre pas testé en 4.0 et 4.1

:flushed:

Depuis fin 2019 …

:man_shrugging:

chépa

https://www.php.net/manual/fr/language.oop5.abstract.php

comme en 4.0 et 4.1 il n’y a que 1 param et que eux sont restés à 2 params dont le second n’est pas obligatoire, ca fonctionne.

mais en 4.2 il y en a 3 donc ca ne fonctionne plus

l’exemple trouvé est pour les classes abstract mais je suppose que c’est idem pour les classes normales

C’est pas parce que leur 2em param est nommé autrement que celui qui existe maintenant ? Suis pas expert là dessus.

non, c’est une question de signature, le nom du param n’importe pas (à la limite son type mais peut-etre pas dans php qui n’est pas fortement typé).

test :


(noms différents)

test 2 :


(signature différente)