Re: Coercive Scalar Type Hints RFC

From: Date: Wed, 25 Feb 2015 14:23:49 +0000
Subject: Re: Coercive Scalar Type Hints RFC
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-83798@lists.php.net to get a copy of this message
On Wed, 25 Feb 2015 17:54:21 +0400, Dmitry Stogov <dmitry@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.

« previous php.internals (#83798) next »