On 11 September 2014 04:02:43 GMT+01:00, Park Framework 
<park.framew...@gmail.com> wrote:
>> You know, “int”, “float”, “string” etc. aren’t currently reserved
>words.

Well, they are in the context of casts:

$a = (int)'42';
$a = (string)42;
etc

> We could add functions, or even make them reserved words and add
>internal functions (à la isset), so int(‘2’), float(‘2.0’),
>string(‘test’) etc.

How would this be different from what we already have? For the function version 
(useful as a callback), we have intval(), strval(), etc

>>
>> Or perhaps class-like constructors? $a = new int('2'); ? Would kinda
>make sense given some people want to add methods to primitive types.
>
>+1
>
>$int     instanceof Int
>$float  instanceof Float
>$num  instanceof Numeric
>$bool  instanceof Boolean
>$str     instanceof String
>$array instanceof Array
>
>This makes it possible not to use the is_*() functions.
>It is desirable to conduct instanceof fully consistent with behavior
>hinting casts, it would be logical and correct.
>Just wanted to be able to use these classes (or interfaces) to create
>their objects, these objects would pass inspection in hinting casts.

This could cause a lot of confusion. If these "constructors" are just a new 
syntax for type casting, there's no obvious reason to behave differently in 
terms of strictness, which is what we were discussing previously. Worse, they 
would look like objects, but behave as plain variables (no reference-like 
ability to modify the value in place).

Alternatively, these could be special "boxed types", which were real objects 
acting almost but not quite the same way as the equivalent basic type. Some 
languages (e.g. Java) have those, but they're frankly rather confusing, and I'm 
not sure what the benefit would be.

Regards,
-- 
Rowan Collins
[IMSoP]


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to