Re: Re: [RFC-Discuss] Scalar Type Declarations v0.5
| From: | Dmitry Stogov | Date: | Wed, 25 Feb 2015 12:55:57 +0000 |
| Subject: | Re: Re: [RFC-Discuss] Scalar Type Declarations v0.5 | ||
| References: | 1 2 3 4 5 6 7 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-83780@lists.php.net to get a copy of this message | ||
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.
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
>
>