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