Override construct function with optional argument should not produce fatal error
Maintainer antworten meist innerhalb von 1 Tag
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 48/100
Rechercherichtung
Reproduziere die beiden Snippets zur Interface-Vererbung in PHP 8.4.24 und vergleiche die Reihenfolge der Parent-Interfaces sowie den daraus resultierenden Fehler bei der Konstruktor-Kompatibilität. Beginne damit, den Engine-Pfad nachzuverfolgen, der geerbte Interface-Methoden validiert; als abgeschlossen gilt die Aufgabe, wenn sich beide Deklarationsreihenfolgen ohne den gemeldeten fatalen Fehler konsistent verhalten und ein Regressionstest den Fall abdeckt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Description
The following code:
<?php
interface MyInterface1 { public function __construct(?string $name = null); }
interface MyInterface2 { public function __construct(?string $name = null, ?int $id = null); }
interface MyInterface3 extends MyInterface1, MyInterface2 { }
Resulted in this output:
PHP Fatal error: Declaration of MyInterface1::__construct(?string $name = null) must be compatible with MyInterface2::__construct(?string $name = null, ?int $id = null) in php shell code on line 1
But I expected no error and the following code works as expected:
<?php
interface MyInterface1 { public function __construct(?string $name = null); }
interface MyInterface2 { public function __construct(?string $name = null, ?int $id = null); }
interface MyInterface4 extends MyInterface2, MyInterface1 { }
PHP Version
PHP 8.4.24 (cli) (built: Jul 30 2026 15:23:13) (NTS)
Copyright (c) The PHP Group
Built by Ubuntu
Zend Engine v4.4.24, Copyright (c) Zend Technologies
with Zend OPcache v8.4.24, Copyright (c), by Zend Technologies
Operating System
Ubuntu 24.04.4 LTS
- Vorherrschende Sprache
- C
- Sterne
- 40.4k
- Forks
- 8.2k
- Ø Merge
- 2 T. 1 Std.
- Gemergte PRs (30 T.)
- 153
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus php/php-src
-
Feature Status: Needs Triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 73/100
Maintainer antworten meist innerhalb von 1 Tag
-
Bug Status: Needs Triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
Maintainer antworten meist innerhalb von 1 Tag
-
Variant analysis: 1 unfixed sibling safety gap in php-srcEvtl. vergeben @kamil-tekiela hat das vor 9 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
php/php-src#23958 · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
sapi_lsapi_ub_write does not return bytes written in lsapi modeEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. OffenBug Status: Needs Triage
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 90/100
Maintainer antworten meist innerhalb von 1 Tag
-
Bug Status: Needs Triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
Ähnliche Issues
-
docs
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
openwrt/firmware-utils#82 ·
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
FujiNetWIFI/fujinet-firmware#1849 ·
Maintainer antworten meist innerhalb von 1 Tag
-
area:http-gateway good first issue priority:low type:bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
crazy-goat/php-fpm-ng#870 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Discover carries headerEdges that nothing reads since #1914 moved E0507/E0517 to the compiler graphOffentech-debt
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
Maintainer antworten meist innerhalb von 1 Tag