On Wed, 25 Feb 2015 17:54:21 +0400, Dmitry Stogov <dmi...@zend.com> wrote:
The object on the call-site should remain to be an object (if it's not passed by reference), however the called function will receive a string.
It works in PHP-5 and PHP-7. Nothing should be changed.
$ sapi/cli/php -r 'class X {function __toString(){return "abc";}} $x=new X; var_dump(strlen($x)); var_dump($x);'
int(3)
object(X)#1 (0) {
}
However, declare(strict_types=1) will break this. see https://github.com/ircmaxell/php-src/compare/scalar_type_hints_v5#diff-ef5bf53d1412b50f85d125ca4fe84741R1182
Thanks. Dmitry.

Dmitry, I was talking about passing an object to a function, expecting a reference of a string:

'class X { function __toString() { return spl_object_hash($this); } } $x = new X; function foo(string &$x){} foo($x); var_dump($x);'

Now what would this produce in Coercive STH is still an open question I guess as there is no implementation yet.

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to