Hi all, On Thu, Dec 4, 2014 at 5:28 PM, Yasuo Ohgaki <yohg...@ohgaki.net> wrote:
> I think we can get rid of this error now when literal is returned. > The reason we have E_STRICT error is that legacy PHP didn't > support this, I suppose. > > http://3v4l.org/8fISj > > Is it possible to allow literal as referenced parameter for PHP7? > It's better to remove needless restrictions where it is possible. > HHVM seems already support this. > > http://3v4l.org/t79rF > > Any comments? > It may be better to focus on return value from functions/methods. There are cases that return values are better to be treated as usual variables. For example, <?php function f1(&$v) {} function f2() {$a = array(1,2,3); return $a; } f1(f2()); ?> http://3v4l.org/2prWX E_STRICT error here is too much. IMHO. I think this kind of code should be allowed without errors rather than forcing users to save return value to variable. e.g. $v = f2(); f1($v); Making scalar to array may be stay as it is now. <?php function f1(&$v) {} function f2() {$a = array(1,2,3); return $a; } // Both are Fatal error: Only variables can be passed by reference f1((array)f2()); f1(array(f2())); ?> http://3v4l.org/Ob1o2 HHVM behavior is interesting. It treats return value as usual variable, but HHVM does not allow casts. <?php function f1(&$v) {} function f2() {$a = array(1,2,3); return $a; } f1((bool)f2()); ?> http://3v4l.org/J4Q8e Any comments? Regards, -- Yasuo Ohgaki yohg...@ohgaki.net