Hi . I think there is no need to argue on it any more. Good programmers have the ability to manipulate the variables' types. But I think it's the icing on the cake if we give the PHP programmer the choice of whether use explicit types. For examlpe, we may add a switch in php.ini, let's say, explict_types=On/Off.
----- Original Message ----- From: "Daniel Egeberg" <daniel.egeb...@gmail.com> To: "Arvids Godjuks" <arvids.godj...@gmail.com> Cc: "Etienne Kneuss" <col...@php.net>; "PHP internals" <internals@lists.php.net> Sent: Thursday, May 27, 2010 4:45 PM Subject: Re: [PHP-DEV] Type hinting > On Thu, May 27, 2010 at 10:34, Arvids Godjuks <arvids.godj...@gmail.com> > wrote: >> Please read more carefully - what I mean that is we deal mostly with >> numbers witch are represented as strings, because all data that comes >> from external sources are STRING regardless of actual contents - be >> that integer or float - no matter. I don't want to make my code look >> like this: >> >> function doSomeStuffWithDbData(int $id, string $name, int $someFlag) { >> } >> >> $sql = 'SELECT id, name, some_flag, .... FROM table WHERE .....'; >> $res = mysqli_query($db, $sql); >> $row = $res->fetch_assoc(); >> doSomeStuffWithDbData((int)$row['id'], $row['name'], (int)$row['some_flag']); >> >> And so on. There is no meaning in doing explicit type casts and then >> check the type again! Because if you have bogus data like "123abc" >> with type cast you cast it to 123 integer and you function check for >> integer will pass without any notice! >> >> Hm, it just strike me. If you want a strict type checks, you have to >> convert your data before you pass it when it comes from outside (and >> it always does by the way! - databases, request data, files). So >> basically you will first convert it and then pass to functions to >> avoid inconsistent type errors. And UPS! Magically you have no errors! >> because $data = '123abc'; $data = (int)$data; results in pure 123 int. >> No benefit in using type hints at all. > > If you don't know whether the user/database provided information you > have is correct before you pass it along to something else, I would > say that the code indeed is bad. Unless you regard "123abc" as a valid > value from your user, don't allow the user to give you that value. If > you regard it as a valid value, then it's not an int thus you wouldn't > want to type cast it in the first place. > > -- > Daniel Egeberg > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php