Confusing error message: Cannot use isset() on the result of an expression (you can use "null !== expression" instead)
Personne n'a encore pris cette issue.
- Langage dominant
- C
- Étoiles
- 40.4k
- Forks
- 8.1k
- Merge moyen
- 2 j 13 h
- PR mergées (30 j)
- 96
Description
Description
The following code:
<?php
class X {
const A = '1';
}
$c = 'b';
isset(X::{$c});
Resulted in this (valid) output:
atal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead)
but I cannot use null !== X::{$c}, which also yields a Fatal Error.
With a constant, this message should recommend using 'defined()' instead, or on top of the current recommendation.
PHP Version
Tested on PHP 8.5, but any version since 8.3
Operating System
Not applicable.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire l’exemple PHP 8.5 utilisant une constante de classe dynamique avec isset(), puis suivez le diagnostic qui produit la comparaison suggérée avec null. Déterminez à quel endroit le message peut prendre en compte les constantes et recommandez plutôt defined() ; c’est terminé lorsque le diagnostic est correct pour cet exemple et que le comportement existant reste couvert.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- php
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- Calme
- Clarté
- Plutôt claire
- Accessibilité débutants
- 52/100