Bug #62204 [Com]: Final keyword not enforced for methods from traits

From: Date: Mon, 06 Dec 2021 22:57:10 +0000
Subject: Bug #62204 [Com]: Final keyword not enforced for methods from traits
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-238230@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=62204&edit=1 ID: 62204 Comment by: ilutov@php.net Reported by: gron@php.net Summary: Final keyword not enforced for methods from traits Status: Verified Type: Bug Package: Scripting Engine problem PHP Version: 5.4Git-2012-06-01 (Git) Block user comment: N Private report: N New Comment: When the method is defined in both the trait and the current class the method isn't "overridden" per se (even though the docs word it this way) but rather the trait method is discarded. For the same reason LSP isn't validated either. https://3v4l.org/RZB2K IMO we should fix both or neither. But I'm leaning towards the latter. Previous Comments: ------------------------------------------------------------------------ [2021-09-16 11:53:57] cmb@php.net Still unresolved: <https://3v4l.org/fG69k>. ------------------------------------------------------------------------ [2013-06-03 12:28:35] alasdair at softhome dot net Still exists in PHP 5.4.4-14 on Debian Wheezy. ------------------------------------------------------------------------ [2013-03-19 12:30:10] wolters dot fl at gmail dot com This bug still exists in PHP version 5.4.13. I've created a simple example at https://gist.github.com/FlorianWolters/5195674 to reproduce the behaviour described in the bug report. IMHO the "final" keyword MUST be enforced when used in a trait. ------------------------------------------------------------------------ [2012-06-01 07:53:36] gron@php.net Description: ------------ Reported by Scott MacVicar on the mailing list (May 4th). Added here to not forget about it. > On 04 May 2012, at 20:30, Scott MacVicar wrote: > > This caused a few bugs for us / confusion. The final keyword is accepted inside a trait but it the class also defines a method without the final keyword this takes precedence. > > Two solutions: > Enforce final when a trait defines - > https://whisky.macvicar.net/patches/0001- If-a-trait-declares-a-method- as-final-enforce-that.patch > > Prohibit final form being used in a trait - https://whisky.macvicar.net/patches/002-traits-Disable-use-of- final-keyword.patch > > I'm for the first solution here > > - S ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=62204&edit=1

« previous php.bugs (#238230) next »