8.3 - cannot set finality and visibility for method from trait at the same time
Dieses Issue hat noch niemand übernommen.
- 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 SimpleTrait
{
private function foo() {}
}
class TraitFixtureWithFinalAndProtected
{
use SimpleTrait {
foo as final protected;
}
}
$rm = new ReflectionMethod(TraitFixtureWithFinalAndProtected::class, 'foo');
var_dump($rm->isFinal());
var_dump($rm->isPrivate());
var_dump($rm->isProtected());
var_dump($rm->isPublic());
Resulted in this output:
bool(false)
bool(true)
bool(false)
bool(false)
But I expected this output instead:
bool(true)
bool(false)
bool(true)
bool(false)
Looks like as final protected is completely ignored, does not change the method but does not throw an error either.
Related to: https://github.com/php/php-src/issues/12854
PHP Version
PHP 8.3
Operating System
No response
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginnen Sie damit, den bereitgestellten PHP-8.3-Reproducer auszuführen und die ReflectionMethod-Flags mit der erwarteten Ausgabe zu vergleichen. Verfolgen Sie den Pfad für das Aliasing von Trait-Methoden, der für as final protected verantwortlich ist, fügen Sie anschließend einen Regressionstest hinzu, der zeigt, dass beide Modifikatoren angewendet werden, und bestätigen Sie die reflektierte Sichtbarkeit und Finalität.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- php
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Ruhig
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 54/100