ID: 44318
Updated by: [EMAIL PROTECTED]
Reported By: Fahr at lycantrope dot com
-Status: Open
+Status: Bogus
Bug Type: Scripting Engine problem
Operating System: FreeBSD 7.0
PHP Version: 5.2.5
New Comment:
If you don't want to code in strict way, then remove E_STRICT from your
error_reporting setting in php.ini. This is not a bug.
Previous Comments:
------------------------------------------------------------------------
[2008-03-03 16:23:39] Fahr at lycantrope dot com
Description:
------------
Introducing a parameter with a default value in a function of a derived
class, where the function in the parent does not have a default value,
throws an E_STRICT.
Introducing a default does NOT change the function's signature and
should not cause any problems. It is possible in C++ and most other OO
languages without any issues. In PHP it causes an E_STRICT to be
thrown.
This is especially an issue when working with third party libraries
(i.e. Smarty) that need to be overridden to have defaults (i.e.
display()/fetch()). This works fine, but does throw an E_STRICT.
Reproduce code:
---------------
class Parent
{
public function foo($bar)
{
}
}
class Child extends Parent
{
public function foo($bar = "test")
{
}
}
Expected result:
----------------
No E_STRICT thrown
Actual result:
--------------
E_STRICT thrown
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=44318&edit=1