Hi Bishop, > De : bishop.bett...@gmail.com [mailto:bishop.bett...@gmail.com] De la part de > Bishop Bettini > > THING 1: Hints are just is_* wrappers
Wrong. Only *strict* types are. > THING 2: Hints are truthy callables > > function my_mixed($m) { > return (null === $m || is_string($m)); > } > function f(is_scalar $s, is_int $i, my_mixed $m) {}; Not sure I understand 'truthy callables'. Your example is a definition of 'strict-only' union types. It's a planned feature. > THING 3: Pre- and post- blocks to define contracts, establish formal join > points, with or without hints from above Contracts are fine but cannot completely replace type hints. I initially followed this road but reverted to thinking that both tools have their use. Contracts can implement performance-intensive checks but, because of this, cannot be executed in production. Type hints are performance-constrained but always executed. Another benefit of type hints is that PHP does not provide a consistent set of 'weak' is_xxx() functions yet. Checking for an integer in PHP, for instance, when you're ready to accept 31, 31.0, or '31', is relatively complex and unintuitive, while 'int $arg' is readable. If is_int() did a intuitive 'PHP way' check, contracts would be an alternative, but it is too counter-intuitive as it exists now. And BC makes changing is_xxx() behavior impossible, of course. > I had to get these off my chest. Forgive me their implementation ignorance. > I am yet tired and uncaffeinated. No problem. Every goodwill is welcome. > To the void I commit their bodies... Sorry, my english is too poor for that. Can you explain? Regards François -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php