Re: Re: [RFC-Discuss] Scalar Type Declarations v0.5
| From: | Anthony Ferrara | Date: | Wed, 25 Feb 2015 15:06:31 +0000 |
| Subject: | Re: Re: [RFC-Discuss] Scalar Type Declarations v0.5 | ||
| References: | 1 2 3 4 5 6 7 8 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-83790@lists.php.net to get a copy of this message | ||
Dmitry:
On Wed, Feb 25, 2015 at 7:55 AM, Dmitry Stogov <dmitry@zend.com> wrote:
> On Wed, Feb 25, 2015 at 2:42 PM, Niktia Nefedov <inefedor@gmail.com> wrote:
>
>> On Wed, 25 Feb 2015 16:30:32 +0400, Dmitry Stogov <dmitry@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.