Skip to content

Conversation

@zoic21
Copy link
Contributor

@zoic21 zoic21 commented May 9, 2025

Fix https://community.jeedom.com/t/cannot-install-jeedom-cancelling/140475/2

Description

Suggested changelog entry

Related issues/external references

Fixes #

Types of changes

  • Bug fix (non-breaking change which fixes)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
    • This change is only breaking for integrators, not for external standards or end-users.
  • Documentation improvement

PR checklist

@kwizer15
Copy link
Contributor

kwizer15 commented May 9, 2025

Pourquoi ces "aller-retours" sur cette signature ?
Si c’est problématique, on peut rendre la class log indépendante de la PSR et faire quelque chose dans ce genre : https://github.com/kwizer15/core/pull/2/files (ne pas tenir compte des modifs sur log.class.php)

@zoic21
Copy link
Contributor Author

zoic21 commented May 9, 2025

Car le changement était pour rendre la declaration identique a PSR mais qui en fonction des versions de PHP change ce qui pose soucis. Et malheureusement non on peut pas etre independant de PSR car certain plugin s'appuient dessus

@kwizer15
Copy link
Contributor

kwizer15 commented May 9, 2025

Ok, il me semblait que dans la version 1.1.4 de psr/log il y avait bien le string mais ce n’est effectivement pas le cas.
Je te propose toutefois de rester pleinement compatible avec la psr en respectant strictement la signature de l’interface :

public function log($level, $message, array $context = array());

sans le : void à la fin. Je suis conscient que ce n’est en rien impactant mais ca permettrait de rester souple vis-à-vis des plugins qui pourraient éventuellement étendre cette classe et rester au maximum cohérent vis-à-vis de l’interface originale.

@zoic21
Copy link
Contributor Author

zoic21 commented May 12, 2025

Effective le void n'est pas utile non plus je viens de le retirer

@Sekiro-kost
Copy link
Contributor

PSR-3 : pour message, a string or an object implementing __toString()

Every method accepts a string as the message, or an object with a __toString() method. Implementors MAY have special handling for the passed objects. If that is not the case, implementors MUST cast it to a string

Il serait donc judicieux pour encore plus de fiabilité et prévenir d'erreur, de caster le $message :

public function log($level, $message, array $context = array()): {
log::add($this->_log_name, $level, (string) $message);
}

@kwizer15
Copy link
Contributor

Je propose de merger en l'état afin de corriger le problème rapidement et de faire une autre pr pour améliorer l'implèm.
Pour etre tres carré, on pourrait, au préalable, vérifier si le parametre est "stringable" via un is_scalar et un method_exists($object, "__toString"). Dans le cas contraire, soit logger un message spécifique, soit renvoyer une exception.

@Sekiro-kost Sekiro-kost merged commit 00f0d2a into alpha May 12, 2025
6 checks passed
@Salvialf Salvialf deleted the zoic21-patch-4 branch November 27, 2025 14:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants