You have a point, but for input in general non type-hinted functions
should be used. Your first example shows a scenario in which not to use
type hinting, because all $_REQUEST input is in string form. However
when dealing with internal functions and methods, type hinting can
prevent flawed interaction between multiple developer's code, as well as
enforce a consistent API.
On Thu, 2008-01-03 at 22:13 +0000, Amir Abiri wrote:
> The question that pops to my mind by reading this thread is "what's wrong
> with the following code":
>
> function add(int $a, int $b)
> {
> return $a + $b;
> }
>
> add($_REQUEST['a'], $_REQUEST['b']); // Assume $_REQUEST['a'] == '1' and
> $_REQUEST['b'] == '2'.
>
> And the truth is that if I was forced to explicitly cast I would be annoyed.
> I can't say I see that
> cast as promoting better code or more readable code - It would just clutter
> the code and be
> annoying. PHP does a lot of type juggling for me, why annoy me all of a
> sudden?
>
> As for the argument of "it's optional" the problem with it is that most code
> that the average PHP
> developer writes is constrained PHP that other PHP developers have already
> written, either library
> or code base. The feature may be optional for the developer writing the
> function or method, but it
> is enforced on the developer who's using it. This is exactly where the
> "direction of the platform"
> arguments come into play.
>
> So I'm thinking, "No".
>
> But then I was thought about it further and thought about this scenario:
>
> $a = some_functions(); // Let's say it returned NULL.
> $b = $_REQUEST['b']; // Let's say this is ''.
>
> add($a, $b);
>
>
> Very bad. Hell I'd like to have some easy way of telling off the developer
> who tries to do that to
> my function. Enter type hints.
>
>
> Here are a few more examples:
>
> concatenate(string $str1, string $str2)
> {
> return $str1 . $str2;
> }
>
> concatenate('x', 1); // Great, what's the big deal ?
> concatenate(NULL, false); // Hmm...
> concatenate($obj1, $obj2); // $obj1 and $obj2 have __toString().
>
>
> So the bottom line is that it seems to me that what would be really useful is
> not strict type
> hinting, but more like "Juggling hinting". i.e differentiate between an "OK"
> type juggle and a "bad"
> type juggle. Silently perform the first, while emit a small notice or warning
> for the later.
>
> Just my... erm, 2$... :-)
>
> A
>
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php