[php-src] Issue #12091: Hard to figure out from an error message where incompatible method declarations meet

From: Date: Thu, 31 Aug 2023 14:37:29 +0000
Subject: [php-src] Issue #12091: Hard to figure out from an error message where incompatible method declarations meet
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-245302@lists.php.net to get a copy of this message
Issue: https://github.com/php/php-src/issues/12091 Author: ondrejmirtes ### 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: ```php 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: ```php 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

« previous php.bugs (#245302) next »