ID:               27227
 User updated by:  waboring at 3gstech dot com
 Reported By:      waboring at 3gstech dot com
-Status:           Closed
+Status:           Open
 Bug Type:         Zend Engine 2 problem
 Operating System: *
 PHP Version:      5CVS-2004-02-11
 Assigned To:      helly
 New Comment:

Actually this hasn't been completely fixed.  This is the same issue as
the original post.  Please do not close this bug as it is NOT fixed. 
This is the same issue.  The first third child class can't resolve the
cascade of the constructor call back to the parent class just because
the case and name of the classes change.



<?php

class A {

    function A() {

        echo __CLASS__."::".__FUNCTION__." called!<br>\n";

    }

}



class bTesting extends A {



    function blah() {

        echo __CLASS__."::".__FUNCTION__."() called<br>\n";

    }

}



class c extends bTesting {

    function c() {

        echo __CLASS__."::".__FUNCTION__."() called!!<br>\n";

        $this->bTesting();

    }

}



$obj = new c();

$obj->blah();

?>



results in:

c::c() called!!



Fatal error: Call to undefined method c::bTesting() in

/home/waboring/devel/bug.php on line 18


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

[2004-02-15 19:28:42] [EMAIL PROTECTED]

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.



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

[2004-02-11 20:33:03] [EMAIL PROTECTED]

Works fine with PHP 4 btw. :) (somehow I think this might be one for
Marcus to fix..?)





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

[2004-02-11 19:20:49] waboring at 3gstech dot com

Description:
------------
I have 3 classes a, b extends a, c extends b.



b doesn't have constructor.



c class contructor calls b's constructor in an effort

to cascade constructor calls up the class heirarchy.



This works great until class 'a' is renamed to 'A'.



<?php

/* This script works as one would expect.

  The foo class constructor gets called.

 */

class a {

    function a() {

        echo __CLASS__."::".__FUNCTION__." called!<br>\n";

    }

}



class b extends a {



    function blah() {

        echo __CLASS__."::".__FUNCTION__."() called<br>\n";

    }

}



class c extends b {

    function c() {

        echo __CLASS__."::".__FUNCTION__."() called!!<br>\n";

        $this->b();

    }

}



$obj = new c();

$obj->blah();



/* Output is

c::c() called!!

a::a called!

b::blah() called

*/

?>





Reproduce code:
---------------
<?php

/* 

  Notice that the only thing that is different here is the

  case of the 'a' class changed to 'A' in all the appropriate places. 
Now I get a Fatal error saying

c::b() doesn't exist?



*/



class A {

    function A() {

        echo __CLASS__."::".__FUNCTION__." called!<br>\n";

    }

}



class b extends A {



    function blah() {

        echo __CLASS__."::".__FUNCTION__."() called<br>\n";

    }

}



class c extends b {

    function c() {

        echo __CLASS__."::".__FUNCTION__."() called!!<br>\n";

        $this->b();

        //ERROR IN LINE ABOVE

    }

}



$obj = new c();

$obj->blah();



/* Output is



c::c() called!!



Fatal error: Call to undefined method c::b() in
/home/waboring/devel/php/oop.php on line 18



*/

?>

Expected result:
----------------
I expect that both of the scripts would work the same way.  I have many
classes that have Mixed case 

Actual result:
--------------
Fatal error: Call to undefined method c::b() in
/home/waboring/devel/php/oop.php on line 18






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


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

Reply via email to