On Wed, Feb 25, 2015 at 6:06 PM, Anthony Ferrara <ircmax...@gmail.com>
wrote:

> 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.
>

I just think that not allbody understand this and expect something
different.

Thanks. Dmitry.

Reply via email to