> On 23 Apr 2019, at 07:50, azjezz <azj...@protonmail.com> wrote:
> 
> I think we would be talking about typed variables at that point.
> 
> 
> ( something you can do with PHP 7.4 http://github.com/azjezz/typed )
> 
> even though `as` is used with `foreach`, i don't think it would be an issue 
> to use it for something else, but i think i will leave that to someone who's 
> more familiar with the PHP parser than me.
> 
> 
> Cheers.
> 
> Sent with ProtonMail Secure Email.
> 
> ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> On Tuesday, April 23, 2019 1:43 AM, Stephen Reay <php-li...@koalephant.com> 
> wrote:
> 
>>> On 23 Apr 2019, at 06:30, azjezz azj...@protonmail.com wrote:
>>> Hello Ben.
>>> yes, i have made a gist with a simple example to show the `as` operator 
>>> usage in hack + HHVM ( 4.1.0 ) output.
>>> see : https://gist.github.com/azjezz/03955ff2b009f1ced22ce68c9a862847
>>> Sent with ProtonMail Secure Email.
>>> ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
>>> 
>>>> On Monday, April 22, 2019 11:50 PM, Benjamin Morel 
>>>> benjamin.mo...@gmail.com wrote:
>>>> Hi Azjezz, thanks for jumping in!
>>>> 
>>>>> I have been using HackLang for quite a while now and i believe they have 
>>>>> a better solution for this, and it would awesome to see it in PHP, the 
>>>>> `as` operator.
>>>> 
>>>> If I understand correctly, `as` is an operator that performs type checks 
>>>> but never casts like () does.
>>>> This looks like a serious candidate for an alternative syntax to the one I 
>>>> proposed!
>>>> 
>>>> -   Ben
>> 
>> I like the idea but I find the syntax (both suggestions) less than great, 
>> given that there’s already “ensure a type” syntax, and both suggestions are 
>> already used for other things (casting and foreach)
>> 
>> Is there some reason (eg ambiguities) a type can’t just be placed before a 
>> variable to ensure a type, similar to a function parameter or typed property?
>> 
>> Eg
>> 
>> string $foo = 'bar';
>> array $bar = getBar();
>> foreach($bar as int $k => string $v) {...}
>> 
>> Cheers
>> 
>> Stephen
> 
> 

I’m talking about exactly the same functionality that exists with method 
parameters - constraining the type it must conform to when it is declared. 
Nothing more nothing less.

Using `as` means trying to add type constraints to an iterable in the foreach 
would be ridiculously confusing:

foreach ( $foo as $K as int => $v as string) {...}

And the cast syntax re-use means you’d not be able to use the object pseudotype 
(or you’d have to remove casting to object) 

 Cheers

Stephen

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

Reply via email to