php / php/php-src

Support for nullsafe function call syntax

Aperta
#14,547 6 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Feature Status: Needs Triage
Lingua principale
C
Stelle
40.4k
Fork
8.1k
Merge medio
2g 13h
PR unite (30g)
96

Descrizione

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

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Riproduci il comportamento segnalato usando gli snippet PHP presenti nell’issue, quindi leggi l’RFC collegato sull’operatore nullsafe e l’implementazione e i test esistenti per le chiamate nullsafe. Il lavoro è completato quando è stata determinata e implementata la gestione prevista di $g?(), preservando gli errori documentati per le chiamate ordinarie e rispettando il comportamento atteso.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
php
Ambito
compilers
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Specificata chiaramente
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.