php / php/php-src

8.3 - cannot set finality and visibility for method from trait at the same time

Ouverte
#12,855 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Bug Status: Needs Triage
Langage dominant
C
Étoiles
40.4k
Forks
8.1k
Merge moyen
2 j 13 h
PR mergées (30 j)
96

Description

Description

The following code:

<?php

trait SimpleTrait
{
    private function foo() {}
}

class TraitFixtureWithFinalAndProtected
{
    use SimpleTrait {
        foo as final protected;
    }
}

$rm = new ReflectionMethod(TraitFixtureWithFinalAndProtected::class, 'foo');
var_dump($rm->isFinal());
var_dump($rm->isPrivate());
var_dump($rm->isProtected());
var_dump($rm->isPublic());

Resulted in this output:

bool(false)
bool(true)
bool(false)
bool(false)

But I expected this output instead:

bool(true)
bool(false)
bool(true)
bool(false)

Looks like as final protected is completely ignored, does not change the method but does not throw an error either.

Related to: https://github.com/php/php-src/issues/12854

PHP Version

PHP 8.3

Operating System

No response

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 exécuter le reproducteur fourni pour PHP 8.3 et comparez les flags de ReflectionMethod avec la sortie attendue. Suivez le chemin d’aliasing des méthodes de trait responsable de as final protected, puis ajoutez un test de régression montrant que les deux modificateurs sont appliqués et confirmez la visibilité et la finalité réfléchies.

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é
3/5
Temps estimé
1-2 jours
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
54/100

Recevez les nouvelles issues par e-mail

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