W liście Stanislav Malyshev z dnia czwartek 03 stycznia 2008: > > type-hinting is asserting. > > checking of types is needed only on interface-border points (where > > With strict checking, that means instead of calling: > foo($bar); > you'd have now to do: > if(is_integer($bar)) { > // stupid foo() call would blow up if passed not integer, so I have > to manually handle it > // oh wait, actually I don't have any way to handle it - I need > foo() to be called to proceed > // so let's just > die("can't call foo() because \$bar is not integer"); > } > foo($bar); >
This code is just a good argument *FOR* type hints. When foo is: function foo(int $bar) {...} and you want the code to die if $bar is not integer, then foo($bar) would be the way to go, without the need for the mess you posted. And if you know that you have either an int or string representing an integer in $bar, then foo((integer)$bar) would work just well. The only problem with the cast is that (integer)'abc' is 0, but it has been so for a long time and there is no need to change it. is_numeric check solves the problem. -- Paweł Stradomski -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php