Bug #49177 [Ver]: include() causes strict erros when including overloading methods (PHP_5_2 only!)

[email protected] ("ss at zornig dot dk")
Newsgroups php.bugs
Message-ID <[email protected]>
Edit report at http://bugs.php.net/bug.php?id=49177&edit=1

 ID:               49177
 User updated by:  ss at zornig dot dk
 Reported by:      ss at zornig dot dk
 Summary:          include() causes strict erros when including
                   overloading methods (PHP_5_2 only!)
 Status:           Verified
 Type:             Bug
 Package:          Scripting Engine problem
 Operating System: *
-PHP Version:      5.2 (SVN-2009-08-05)
+PHP Version:      5.*

 New Comment:

I have found a similar error in 5.3.2


Previous Comments:
------------------------------------------------------------------------
[2010-04-20 13:39:38] ss at zornig dot dk

Description:
------------
This works in 5.3.2 however, I have found a similar error.

Reproduce code:
---------------
test.php:
<?php
error_reporting(E_ALL | E_STRICT);

abstract class ObjParent {
	public function set(ObjParent $param1, $param2){ }
}

require_once('obj.php');
?>

obj.php:
<?php
class ObjChild extends ObjParent {
	public function set(ObjChild $param1, $param2=true){ }
}
?>



Expected result:
----------------
This should be without any errors as i would if the test.php looks like
this:

<?php
error_reporting(E_ALL | E_STRICT);

abstract class ObjParent {
	public function set(ObjParent $param1, $param2){ }
}

class ObjChild extends ObjParent {
	public function set(ObjChild $param1, $param2){ }
}
?>

Actual result:
--------------
Strict Standards: Declaration of ObjChild::set() should be compatible
with that of ObjParent::set() in /usr/home/webroot/dumpsite/bug/obj.php 
on line 4

------------------------------------------------------------------------
[2009-08-06 12:03:08] ss at zornig dot dk

Description:
------------
When overloading a method, changing a parameter to accept a default
value  E_STRICT error is triggered. This however only happens if the
object declaration is loading using include, not if the declaration is
in the file called.

Reproduce code:
---------------
test.php:
<?php
error_reporting(E_ALL | E_STRICT);

abstract class ObjParent {
	public function set($param1, $param2){ }
}

require_once('obj.php');
?>

obj.php:
<?php
class ObjChild extends ObjParent {
	public function set($param1, $param2=true){ }
}
?>


Expected result:
----------------
This should be without any errors as i would if the test.php looks like
this:

<?php
error_reporting(E_ALL | E_STRICT);

abstract class ObjParent {
	public function set($param1, $param2){ }
}

class ObjChild extends ObjParent {
	public function set($param1, $param2=true){ }
}
?>

Actual result:
--------------
Strict Standards: Declaration of ObjChild::set() should be compatible
with that of ObjParent::set() in /home/webroot/dumpsite/obj.php on line
8


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



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=49177&edit=1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.