php / php/php-src

Invalid trait insteadof list

Offen
#18,223 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bug Category: Engine Status: Verified
Vorherrschende Sprache
C
Sterne
40.4k
Forks
8.1k
Ø Merge
2 T. 13 Std.
Gemergte PRs (30 T.)
96

Beschreibung

Description

The following code:

<?php

trait A {
    public function test() {
        return 'A';
    }
}

trait B {
    public function test() {
        return 'B';
    }
}

class C {
    use A, B {
        A::test insteadof B;
        B::test insteadof A;
    }
}

$c = new C();
var_dump($c->test());

Resulted in this output:

Fatal error: Uncaught Error: Call to undefined method C::test()

But I expected this output instead:

Some trait-resolution-time error
PHP Version

PHP-5.4+

Operating System

No response

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, den minimalen PHP-Reproduzierer aus dem Issue in einem unterstützten PHP-Build auszuführen, und vergleiche das Ergebnis der undefinierten Methode mit dem erwarteten Fehler zum Zeitpunkt der Trait-Auflösung. Verfolge, wie der Block use A, B die beiden einander widersprechenden insteadof-Deklarationen verarbeitet; fertig ist die Aufgabe, wenn die ungültige Liste mit einem Trait-Auflösungsfehler abgelehnt wird, statt C::test() undefiniert zu lassen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
php
Bereich
backend
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.