php / php/php-src

Support for nullsafe function call syntax

Ouverte
#14,547 6 commentaires 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.2k
Merge moyen
2 j 13 h
PR mergées (30 j)
96

Description

Description

The following code:

<?php
class Foo {
    public function __invoke(): string {
        return 'foo invoked';
    }
}

$f = new Foo();
var_Dump($f());

results in this expected output:

string(11) "foo invoked"
$g = null;
$g();

results in this expected output

Fatal error: Uncaught Error: Value of type null is not callable
$g = null;
$g?->__invoke();

results in this expected output:

string(11) "foo invoked"

As the call to ->__invoke() can be shortened to () I would have expected to be able to use the nullsafe operator here as well and write

$g = null;
$g?();

But this results in in this output:

Parse error: syntax error, unexpected token ")"

I would have expected

string(11) "foo invoked"

Is this on purpose? I could not find any mention of invoke in the RFC. So was this overseen?

See also https://3v4l.org/n09i2

PHP Version

All currently supported PHP-Versions

Operating System

No response

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

Reproduisez le comportement signalé à l’aide des extraits PHP de l’issue, puis lisez le RFC lié sur l’opérateur nullsafe ainsi que l’implémentation et les tests existants pour les appels nullsafe. Le travail est terminé lorsque le traitement prévu de $g?() a été déterminé et implémenté, tout en préservant les erreurs documentées pour les appels ordinaires et en correspondant au comportement attendu.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
php
Domaine
compilers
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

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