Forgot to cc list, see below ---------- Forwarded message ---------- From: "Chris Wright" <c...@daverandom.com> Date: 4 Dec 2014 14:09 Subject: Re: [PHP-DEV] Re: Only variables can be passed by reference To: "Andrea Faulds" <a...@ajf.me> Cc:
> On 4 December 2014 at 12:26, Andrea Faulds <a...@ajf.me> wrote: >> >> >> > On 4 Dec 2014, at 10:38, Yasuo Ohgaki <yohg...@ohgaki.net> wrote: >> > >> > >> > Yet another sample code. This cannot be executed on 3v4l.org for security >> > reasons. >> > >> > <?php >> > $sock = fsockopen('www.php.net', '80'); >> > var_dump($sock); >> > >> > $socks = array($sock); >> > var_dump(stream_select($socks, $socks, $socks, 1)); >> > >> > //var_dump(stream_select(array($sock), array($sock), array($sock), 1)); >> > //Fatal error: Only variables can be passed by reference in >> > /home/yohgaki/tmp/ttt.php on line 8 >> > ?> >> >> Using stream_select without real variables like that is weird, what’s the point? You’ve discarded the read/write/error information, all the return value tells you is that *something* changed. >> > > While I'm undecided on this change (leaning towards "no"), there is a more useful example with stream_select(): > > $socks = array($sock); > var_dump(stream_select($socks, $socks, NULL, 1)); > > It is rare that anything actually uses OOB data in the real world, more often than not stream_select() is preceded by a line like $e = NULL; > > I could maybe get behind this for specifically permitting literal NULL to be passed, as is often the convention for out params in C, where passing a NULL pointer is permitted and handled as "I don't want this data". > > Another example of where this could be useful is stream_socket_client(), where you want to specify timeout/flags/context but don't care about errno/errstr, so you could pass literal NULL to these instead of having to declare a couple of trash variables. > > That said, the use cases above would probably be better served by named parameters. > > Thanks, Chris > >> >> -- >> Andrea Faulds >> http://ajf.me/ >> >> >> >> >> >> -- >> PHP Internals - PHP Runtime Development Mailing List >> To unsubscribe, visit: http://www.php.net/unsub.php >> >