ID: 12560
Updated by: sniper
Reported By: [EMAIL PROTECTED]
Old Status: Open
Status: Closed
Bug Type: Class/Object related
Operating System: Solaris 2.7
PHP Version: 4.0.6
New Comment:

Works for me just fine with PHP 4.1.0RC1


Previous Comments:
------------------------------------------------------------------------

[2001-08-03 13:51:21] [EMAIL PROTECTED]

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 this bug report at http://bugs.php.net/?id=12560&edit=1


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to