Missing visibility check for private abstract trait methods
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 T {
public abstract function test();
}
class P {
private function test() {}
}
class C extends P {
use T;
}
This passes without errors. There's an intentional BC layer that skips visibility checks for abstract trait methods (see Zend/tests/traits/abstract_method_4.phpt). However, this should not include private parent methods, because the trait cannot call those. The whole BC layer is questionable today, so it might be better to remove it entirely.
PHP Version
All supported branches
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
Reproduziere das Beispiel und lies Zend/tests/traits/abstract_method_4.phpt, das das bestehende BC-Verhalten für abstrakte Trait-Methoden dokumentiert. Verfolge den Pfad der Sichtbarkeitsprüfung für eine private Methode der übergeordneten Klasse und füge anschließend einen Regressionstest hinzu oder passe ihn an, sodass das beabsichtigte Verhalten eindeutig ist und die relevanten unterstützten Branches erfolgreich durchlaufen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- php
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100