php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #42016 Call to a parent's parent non-static method statically is allowed
Submitted: 2007-07-17 06:24 UTC Modified: 2007-07-23 23:13 UTC
Votes:3
Avg. Score:4.3 ± 0.5
Reproduced:0 of 0 (0.0%)
From: reto at buxaprojects dot com Assigned:
Status: Not a bug Package: Class/Object related
PHP Version: * OS: *
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: reto at buxaprojects dot com
New email:
PHP Version: OS:

 

 [2007-07-17 06:24 UTC] reto at buxaprojects dot com
Description:
------------
I expected, that i cannot call a non-static method in a parent's parent class with ParentClassName::method() from a child class. But it works even on E_STRICT. I think this should be a bug!

Reproduce code:
---------------
class A {
    private $myVar;   
    public function test() { 
        $this->myVar = 'test';
        echo 'A::test()' . "\n";
    }
}
class B extends A { 
    public function test() { 
        echo 'B::test()' . "\n"; 
    }
}
class C extends B { 
    public function test() 
    { 
        echo 'C::test()' . "\n";
        A::test();
    }
} 
$c = new C; 
$c->test();

Expected result:
----------------
Non-static method A::test() should not be called statically

Actual result:
--------------
C::test
A::test

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2007-07-17 07:51 UTC] derick@php.net
And why do you think this is a bug?
 [2007-07-17 08:17 UTC] reto at buxaprojects dot com
Because a non-static method should not be called statically! This should also apply for a parents parent class! Class C and B should only be able to call parent:: . If class C must access the method test() of class A, class B shouldn't override the method test().
 [2007-07-23 23:13 UTC] helly@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

It is just the way it works. If it sees it is coming from the right context this call version doe snot enforce a static call. Instead it will simply keep $this and be happy with it.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Dec 22 03:01:28 2024 UTC