ID:               28459
 Updated by:       [EMAIL PROTECTED]
 Reported By:      alpzrjvr at hotmail dot com
-Status:           Open
+Status:           Verified
 Bug Type:         Class/Object related
-Operating System: Slackware 9.0
+Operating System: Slackware 9.0, Windows XP
-PHP Version:      4.3.6
+PHP Version:      4.3.8


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

[2004-05-20 20:04:59] alpzrjvr at hotmail dot com

Description:
------------
http://cr2.php.net/language.oop.constructor

PHP manual says: 
In PHP 3, the function B() in class A will suddenly become a
constructor in class B, although it was never intended to be. The rule
in PHP 3 is: 'A constructor is a function of the same name as the
class.'. PHP 3 does not care if the function is being defined in class
B, or if it has been inherited. 

This is fixed in PHP 4 by modifying the rule to: 'A constructor is a
function of the same name as the class it is being defined in.'. Thus
in PHP 4, the class B would have no constructor function of its own and
the constructor of the base class would have been called, printing 'I am
the constructor of A.<br />'.


But, I test the script in diferent PHP's versions and the result was: 

"I am a regular function named B in class A.
I am not a constructor in A." ... with PHP 4.x.x .

Reproduce code:
---------------
<?
class A
{
   function A()
   {
       echo "I am the constructor of A.<br />\n";
   }

   function B()
   {
       echo "I am a regular function named B in class A.<br />\n";
       echo "I am not a constructor in A.<br />\n";
   }
}

class B extends A
{
   function C()
   {
       echo "I am a regular function.<br />\n";
   }
}

$b = new B();
or 
$b = new B; (also works)
?>

Expected result:
----------------
I am the constructor of A.

Actual result:
--------------
I am a regular function named B in class A.
I am not a constructor in A.


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


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

Reply via email to