Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Override construct function with optional argument should not produce fatal error

Ouverte
#23,630 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@lazerg y travaille déjà.

Depuis le 9/9/2026.

  • #23638 par @lazerg — ouverte

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
48/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
php
Domaine
compilers

Piste de recherche

Reproduisez les deux extraits d’héritage d’interfaces dans PHP 8.4.24, en comparant l’ordre des interfaces parentes et l’erreur de compatibilité du constructeur qui en résulte. Commencez par suivre le chemin du moteur qui valide les méthodes d’interface héritées ; le travail sera terminé lorsque les deux ordres de déclaration se comporteront de manière cohérente sans l’erreur fatale signalée et qu’un test de régression couvrira le cas.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Bug Status: Needs Triage
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

Langage dominant
C
Étoiles
40.4k
Forks
8.2k
Merge moyen
2 j 3 h
PR mergées (30 j)
151

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de php/php-src

Toutes les issues de php/php-src

Issues similaires

Plus d'issues C

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.