Edit report at http://bugs.php.net/bug.php?id=52969&edit=1

 ID:                 52969
 Updated by:         cataphr...@php.net
 Reported by:        ircmaxell at yahoo dot com
 Summary:            This defined in static call from within another
                     class
-Status:             Open
+Status:             Bogus
 Type:               Bug
 Package:            Class/Object related
 Operating System:   linux
 PHP Version:        5.3.3
 Block user comment: N

 New Comment:

Closing as bogus. As you have pointed out, this is documented.


Previous Comments:
------------------------------------------------------------------------
[2010-10-02 15:51:04] gnuffo1 at gmail dot com

It has been pointed out to me that this is actually documented:
http://us2.php.net/manual/en/language.oop5.basic.php



Under example 2 and specifically the lines:



$b = new B();

$b->bar();

------------------------------------------------------------------------
[2010-10-02 15:33:50] php at rwasmus dot nl

Can reproduce across architectures & versions from 5.2.9 onward, IMHO
opinion, just an E_STRICT error in between is understating the scripters
design flaw. Some existing code may rely on it, so a real fix may hurt
some packages, but at the very least I'd increase the errors severity.

------------------------------------------------------------------------
[2010-10-02 15:33:00] ircmaxell at yahoo dot com

Oh, and $this is an object of class Test2 within Test1::getName()...

------------------------------------------------------------------------
[2010-10-02 15:28:02] gnuffo1 at gmail dot com

This seems to have existed way back in PHP 4.1:
http://www.advogato.org/article/470.html



If this is a bug, then I think it should be turned into a feature and
documented. It is occasionally useful for trait-like functionality.

------------------------------------------------------------------------
[2010-10-02 15:24:18] ircmaxell at yahoo dot com

Description:
------------
When calling a non-static method statically from within another class
(non-

inherited), $this is populated with the other object's class.

Test script:
---------------
class test1 {

    public function getName() {

        return $this->name;

    }

}

class test2 {

    public $name = 'foo';

    public function getName() {

        return test1::getName();

    }

}

$obj = new Test2;

echo $obj->getName();

Expected result:
----------------
Fatal Error: Using $this when not in object context

Actual result:
--------------
"foo" is outputted.


------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=52969&edit=1

Reply via email to