php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #78776 Abstract method implementation from trait does not check "static"
Submitted: 2019-11-04 07:38 UTC Modified: 2019-12-18 14:50 UTC
From: mozafar dot gholami at gmail dot com Assigned: nikic (profile)
Status: Closed Package: Scripting Engine problem
PHP Version: 7.3.11 OS: Win 10
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: mozafar dot gholami at gmail dot com
New email:
PHP Version: OS:

 

 [2019-11-04 07:38 UTC] mozafar dot gholami at gmail dot com
Description:
------------
abstract methods should be implemented by child class and should not be static but when the implementation comes from a trait it cloud be static and code continue running without any problem. 

Test script:
---------------
<?php

abstract class A
{
    abstract public function createApp();
}

class B extends A
{
    use C;
}

trait C
{
    public static function createApp()
    {
        echo "You should not be here";
    }
}

B::createApp();

Expected result:
----------------
Error for not implementing abstract method


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2019-11-04 07:55 UTC] cmb@php.net
-Status: Open +Status: Verified -Package: PHP Language Specification +Package: Scripting Engine problem
 [2019-11-04 07:55 UTC] cmb@php.net
Confirmed: <https://3v4l.org/WgSfr>
 [2019-11-05 13:17 UTC] rowan dot collins at gmail dot com
Specifically, the error when implementing the method directly is:

> Fatal error: Cannot make non static method A::createApp() static in class B

https://3v4l.org/it0Se

The error is displayed correctly if the base method is not abstract: https://3v4l.org/I2E5Y
 [2019-12-18 14:50 UTC] nikic@php.net
-Summary: Abstract method implementation in trait +Summary: Abstract method implementation from trait does not check "static" -Assigned To: +Assigned To: nikic
 [2019-12-18 14:56 UTC] nikic@php.net
Automatic comment on behalf of nikita.ppv@gmail.com
Revision: http://git.php.net/?p=php-src.git;a=commit;h=4a61d842e71c97868636dbf67432ad93189ee266
Log: Fixed bug #78776
 [2019-12-18 14:56 UTC] nikic@php.net
-Status: Verified +Status: Closed
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Oct 27 16:01:27 2024 UTC