Em Thu, 12 Jul 2012 18:30:43 +0200, Stas Malyshev <smalys...@sugarcrm.com>
escreveu:
Would it be worth while adding a new type hint that checks for this
condition? I'd propose Iterable:
I see more and more multiplication of weird ad-hoc type checks. First we
had "callable", now "traversable", then we invent more and more weird
functional types with complex logic. I don't like this development at
all. It's ad-hoc introducing of half-baked, unstandartized, undesigned
strict typing. Strict typing is not a good idea for PHP, and weird
strict typing based on complex conditions hidden from the user is even
worse IMO.
I agree with everything Stas said.
Additionally, while "callable" has a problem that "iterable" wouldn't have
-- namely, whether something is callable is context sensitive* -- its
implementation was accompanied by a homogenization of callable types
(e.g., you can now do $a = $func = ['A', 'foo']; $a()). Traversable types
are by no means interchangeable. In fact the only thing they have in
common is that can be passed to foreach. On everything else, they're
different. It makes to sense to a pseudo-type for two entities that all
they have in common is that one property.
* Example:
class A {
public static function foo(callable $r) {
B::foo($r);
}
private static function test() {}
}
class B {
public static function foo(callable $r) {}
}
A::foo(['A', 'test']);
--
Gustavo Lopes
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php