Dmitry:

On Wed, Feb 25, 2015 at 7:55 AM, Dmitry Stogov <dmi...@zend.com> wrote:
> 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.

"Weird"?

int(5)
string(1) "5"

How is that weird? That's precisely what you asked it to do.

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

Reply via email to