On Wed, Feb 25, 2015 at 2:42 PM, Niktia Nefedov <inefe...@gmail.com> wrote:

> On Wed, 25 Feb 2015 16:30:32 +0400, Dmitry Stogov <dmi...@zend.com> wrote:
>
>  anyone may tell, what this will print without running :)
>>
>> main.php
>> ========
>> <?php
>> declare(strict_types=1)
>> include "a.php";
>> include "b.php";
>> var_dump(foo("5"));
>> ?>
>>
>> a.php
>> =====
>> <?php
>> declare(strict_types=0)
>> function foo(string $a): string {
>>     bar($a);
>>     return $a;
>> }
>> ?>
>>
>> b.php
>> =====
>> <?php
>> declare(strict_types=1)
>> function bar(int &$a) {
>>     var_dump($a);
>> }
>> ?>
>>
>> Thank. Dmitry.
>>
>
>
> Hi Dmitry,
>
> This will error out because $a in the scope of `foo` will be coerced to
> int type when passed to bar by reference.
>

I think it'll work without errors and produce some explainable but weird
output. I didn't run it myself yet.

Thanks. Dmitry.


>
> References are a problem for weak-only types as well (even more so I would
> say, because in a lot of cases they would continue working truncated or
> changed).
>
> Happily there are not lots of post-php5 code that uses references here and
> there, but that would be good to add the point about them to both RFCs (and
> in documentation in future) just so that users would be aware of that.
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

Reply via email to