|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2001-10-21 20:03 UTC] sniper@php.net
[2002-10-16 07:25 UTC] public at macfreek dot nl
[2002-10-16 07:31 UTC] public at macfreek dot nl
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Oct 29 22:00:02 2025 UTC |
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(); ?>