php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #31582 extended overload classes not honouring overload
Submitted: 2005-01-17 11:36 UTC Modified: 2005-02-02 17:17 UTC
From: alan_k@php.net Assigned:
Status: Wont fix Package: Scripting Engine problem
PHP Version: 4CVS-2005-01-17 OS: linux
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 this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: alan_k@php.net
New email:
PHP Version: OS:

 

 [2005-01-17 11:36 UTC] alan_k@php.net
Description:
------------
the class of an overloaded class is not honouring the fact that it's parent is overloaded. (as per previous releases)


Reproduce code:
---------------
class ddo_base {
        echo "METHOD: ".$method;
    function __call($method,$args,&$return)  {
        return true;
    }
}


class ddo extends ddo_test {
 
}

 
overload("ddo_base");
$x = new ddo_base;
$x->helloWorld();
$x = new ddo;
$x->helloWorld();

Expected result:
----------------
METHOD: ddo_testMETHOD: helloworldMETHOD: ddoMETHOD: helloworld

Actual result:
--------------
METHOD: ddo_testMETHOD: helloworld
Fatal error: Call to undefined function: helloworld() in ....

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-01-17 11:39 UTC] alan_k@php.net
agh... try again..


class ddo_base {
    function __call($method,$args,&$return)  {
        echo "METHOD:".$method;
        return true;
    }
}


class ddo extends ddo_base {
 
}

 
overload("ddo_base");
$x = new ddo_base;
$x->helloWorld();


$x = new ddo;
$x->helloWorld();
 [2005-01-20 00:59 UTC] sniper@php.net
Yet another overload bug..Stas, can you look into this too?
 [2005-02-02 16:32 UTC] stas@php.net
Overload changes class' handlers, but not it's descendants' handlers. Thus, class "ddo" doesn't know about handlers for ddo_base. Simplest way to fix it would be to do:
overload("ddo")

Other way would be to make fcall opcode to traverse all object hierarchy in hope there would be handler somewhere, but it seems to be somewhat slow.
 [2005-02-02 17:17 UTC] sniper@php.net
Workaround exists -> won't fix.

 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Apr 18 12:01:28 2024 UTC