php / php/php-src

Hard to figure out from an error message where incompatible method declarations meet

Abierto
#12,091 6 comentarios 14 reacciones 1 asignado Ver en GitHub

@derickr ya está trabajando en esto.

Desde el 31/8/2023.

Feature Status: Needs Triage
Lenguaje dominante
C
Estrellas
40.4k
Forks
8.2k
Merge medio
2 d 13 h
PR fusionados (30 d)
96

Descripción

Description

When we launch a PHP application, we might get a similar message:

Fatal error: Declaration of Baz::getId(): mixed must be compatible with Foo::getId(): int in /tmp/preview on line 13

When we look up the declarations of these methods, we get this:

interface Foo
{
    
    public function getId(): int;
    
}

abstract class Baz
{
    
    public function getId(): mixed
    {
        //...
    }
    
}

They have nothing in common, their existence on their own shouldn't be a problem for our application.

The problem is when they meet via a common child that both extends Baz and implements Foo:

class Lorem extends Baz implements Foo
{
    
}

The problem is that we don't learn about Lorem from the PHP error message which makes it really hard to find Loremin a large application.

Personally I solved it by enabling Xdebug in develop mode and looking at the stack trace. One (or both) of these two things would help to debug this problem in the future:

  1. Show fatal error stack trace in PHP out of the box, without requiring Xdebug.
  2. Somehow include Lorem too in this error message: Fatal error: Declaration of Baz::getId(): mixed must be compatible with Foo::getId(): int in /tmp/preview on line 13

3v4l.org link: https://3v4l.org/4iOYG

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.