php / php/php-src

Improve incompatible trait property error message

Ouverte
#16,643 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Feature Status: Verified
Langage dominant
C
Étoiles
40.4k
Forks
8.2k
Merge moyen
2 j 13 h
PR mergées (30 j)
96

Description

Description

The following code results in a PHP Fatal Error:

trait FooTrait
{
    private array $options = [];
}
class Foo
{
    use FooTrait;
    public function __construct(private array $options = []) {}
}

The error thrown is

PHP Fatal error:  Foo and FooTrait define the same property ($options) in the composition of Foo. However, the definition differs and is considered incompatible.

However, the same thing defined in the class instead of in the constructor works:

trait FooTrait
{
    private array $options = [];
}
class Foo
{
    use FooTrait;
    private array $options = [];
}

As does the same thing, but without setting a default value:

trait FooTrait
{
    private array $options;
}
class Foo
{
    use FooTrait;
    public function __construct(private array $options) {}
}

This seems to be ane rror

PHP Version

PHP 8.1.29 to PHP 8.4.0-dev

Operating System

MAC OSX 14.7

Guide de contribution

Ouvrir le guide de contribution

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.

Piste de recherche

Aucun fichier source ni test n’est identifié dans l’issue. Reproduisez les exemples avec les versions de PHP indiquées, puis suivez la composition des propriétés des traits avec les propriétés promues par le constructeur ; le travail est terminé lorsque le comportement des propriétés incompatibles est corrigé et couvert par un test de régression.

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

Évaluation

Stack technique
php
Domaine
compilers
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

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