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