Edit report at http://bugs.php.net/bug.php?id=47383&edit=1
ID: 47383 Updated by: s...@php.net Reported by: info at netmosfera dot it Summary: override declaration with non type hinted params should allow type hinting -Status: Open +Status: Bogus Type: Feature/Change Request -Package: Feature/Change Request +Package: *General Issues Operating System: * PHP Version: 5.3.0beta1 Block user comment: N New Comment: Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php Method arguments are supposed to be contravariant, see: http://en.wikipedia.org/wiki/Liskov_substitution_principle http://en.wikipedia.org/wiki/Covariance_and_contravariance_%28computer_science%29#Need_for_covariant_argument_types.3F Previous Comments: ------------------------------------------------------------------------ [2009-02-13 21:15:49] info at netmosfera dot it better explanation: class a { function a(File $x){echo get_class($x);} } class b extends a { function a(ImageFile $x){echo get_class($x);} } this obviously works! now, if mixed means "accepts everything" class a { function a(Mixed $x){echo get_class($x);} } i should be able to override it: class b extends a { function a(File $x){echo get_class($x);} } no? ------------------------------------------------------------------------ [2009-02-13 20:45:43] info at netmosfera dot it Description: ------------ hello i think that non-type-hinted arguments (mixed values): class a { function test([mixed] $argument){} } should allow type hinting in child classes class b extends a { function test(ImageFile $argument){} } Reproduce code: --------------- "mixed" is a general type... means "everything" but if i want to build an ArrayObject object with one-only type i cannot do this [internal] class ArrayObject implements ArrayAccess { function offsetSet($o, [mixed] $value) {} } class ImageList extends ArrayObject { function offsetSet($o, Image $imageObject) // fatal error! {} } Actual result: -------------- Fatal error: Declaration of ImageList::offsetSet() must be compatible with that of ArrayAccess::offsetSet() in xx on line 8 thank you ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=47383&edit=1