php / php/php-src

Abstract properties (hooks) in traits

Ouverte
#19,504 10 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Category: Engine 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

At the moment such code does not work (8.4 and 8.5/master), which does not seem very logical:

<?php

trait Example
{
    abstract public string $property {
        get; 
    }
}

class ExampleImpl
{
    use Example;
    
    public function __construct(
        public readonly string $property,
    ) {}
}

Produces:

Fatal error: ExampleImpl and Example define the same hooked property ($property) in the composition of ExampleImpl. Conflict resolution between hooked properties is currently not supported. Class was composed

https://3v4l.org/UYnbo

According to RFC (https://wiki.php.net/rfc/property-hooks#interaction_with_traits), traits do not actually support properties, but at least such primitive conflict resolution would be nice to have.


P.S. Is it worth writing to internals for RFC if there is no way to send a PR?

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

Commencez par le reproducteur fourni de trait et de hooked property, puis lisez la section du property-hooks RFC consacrée à l’interaction avec les traits. Suivez la manière dont la composition de traits gère l’abstract hooked property et la implementing constructor-promoted property. Le travail est terminé lorsque l’exemple se compose sans le conflit signalé tout en préservant le comportement prévu du property-hook.

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

Évaluation

Stack technique
php
Domaine
compilers
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
30/100

Recevez les nouvelles issues par e-mail

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