php / php/php-src

Confusing error message: Cannot use isset() on the result of an expression (you can use "null !== expression" instead)

Ouverte
#21,507 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Feature Status: Needs Triage
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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. 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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.