Bug #12560: 'parent' incorrectly refers to $this in certain cases
| From: | nick at macaw dot demon dot co dot uk | Date: | Fri, 03 Aug 2001 17:51:21 +0000 |
| Subject: | Bug #12560: 'parent' incorrectly refers to $this in certain cases | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-61991@lists.php.net to get a copy of this message | ||
From: nick@macaw.demon.co.uk
Operating system: Solaris 2.7
PHP version: 4.0.6
PHP Bug Type: Class/Object related
Bug description: 'parent' incorrectly refers to $this in certain cases
This bug occurred with Solaris 2.7 and a regular build of php as a
standalone app. I haven't tested on Linux yet.
If the base class of a few levels of inheritance is in an included or
required file, then 'parent' may be incorrectly setup. Calls via 'parent'
will actually call $this, and then give incorrect and most likely
disastrous behaviour.
The following example will quickly crash due to stack overflow from
infinite recursion, whereas inlining the base class 'X' rather than
including it will work as expected.
Incidentally, instantiating a B rather than a C will work correctly in both
cases.
File X.php:
<?php
class X
{
function X() { }
}
?>
File crashme.php:
<?php
// Commenting out include and uncommenting class X
// below will work, whilst including X will crash
include_once 'X.php';
/*
class X
{
function X() { }
}
*/
class A extends X
{
function A() { $this->X(); }
function crash_me() { }
}
class B extends A
{
function B() { $this->A(); }
function crash_me() { parent::crash_me(); }
}
class C extends B
{
function C() { $this->B(); }
}
$r = new C();
$r->crash_me();
?>
--
Edit bug report at: http://bugs.php.net/?id=12560&edit=1