Derick Rethans wrote: > Hei, > > currently if you pass a wrong object's type to a typehinted parameter: [...] > Fatal error: Argument 1 must be an instance of foo in /tmp/foo.php on > line 3 > > As type hinting is a new OO thing, it might perhaps make some sense to > make this an exception instead - as this error might also happen for > dynamic things by people who use the classes you designed. In that > case having this fatal error to stop the whole application can be > annoying. Opinions?
As a PHP user, I have to say I wholeheartedly agree, and I'm glad someone is raising this issue again. The last time it was seriously discussed: http://marc.theaimsgroup.com/?l=php-dev&m=104878782529499&w=2 was less than encouraging. As a user who is trying to write robust code, my biggest issue is not whether or not a type hint violation throws an exception, but whether or not it results in an error than I can trap for. An exception would be great, obviously, but I'd be just as happy with an E_WARNING, so at the very least my custom error handler can catch this. As you have pointed out, it's currently a fatal error so a user-defined error handler is not called. I don't typically comb through my server's php error logs, since I mainly depend on my custom error handler to let me know when one of my applications is having problems. Because of this I have been forced to avoid using type hints and I've actually implemented by own function to simulate type hints, like so: /* @param SomeObject $foo */ public function someMethod($foo) { checkArgType($foo, 'SomeObject'); } checkArgType() throws an exception if $foo isn't instanceof 'SomeObject'. I would MUCH rather use type hints here. They're cleaner from a documentation standpoint and the wtf factor is much lower. Unfortunately I can't as long as type hint violations are fatal. So, I would be very happy if type hint violations either threw and exception OR triggered an E_WARNING. As Wez pointed out in http://marc.theaimsgroup.com/?l=php-dev&m=104911187824684&w=2, currently if you pass the wrong number of arguments to a function/method you get an E_WARNING (not a fatal error), so I don't see why type hint violations shouldn't be treated similarly. It would increase their value and utility immensely... -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php