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:
This isn't quite fixed yet. Here is a sample that still breaks in today's CVS. This code works fine in php4 <?php class bTesting { function blah() { echo __CLASS__."::".__FUNCTION__."() called<br>\n"; } } class c extends bTesting { function c() { echo __CLASS__."::".__FUNCTION__."() called!!<br>\n"; $this->bTesting(); //FAILED ON LINE ABOVE } } $obj = new c(); $obj->blah(); ?> This outputs: c::c() called!! Fatal error: Call to undefined method c::bTesting() in /home/waboring/devel/bug.php on line 12 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