On 27/02/12 02:44, John Crenshaw wrote:
> If we can agree on some basic terminology I think it would move things
> forward considerably. I propose these terms:
> - "Strict Typing" means the super strict old C style typing that has been
> proven to be ridiculous in this environment because of the obvious problems
> inherent in the fact that almost every input is a string.
> - "Weak Typing" means types in the same sense that the PHP documentation uses
> types (for example, the docs indicate substr(string, integer), and
> substr(12345, "2") == "345".)
> - "No Scalar Typing" should be used to indicate the current system (where
> there is no provision for hinting at scalar types.)
I'd add a fourth class, in between weak and strict typing, where a
diagnostic is issued when the requested conversion doesn't make sense.
Let's call it sane weak typing. The following would work:
function score(int $number) {
global $points, $total;
$points += $number;
$total++;
}
score(42);
score(1.0);
score("7");
but these would generate a diagnostic:
score(" Mary had a little lamb");
score( array(3, 27, 45) );
score( new stdclass );
score( fopen("myfile.txt", "w") );
(note that in some of these cases, the += operator would already produce
a fatal error)