PHP and passing non-variables by reference

In PHP 5.0.5, they’ve now made it a requirement that things that are passed by reference must now explicitly be a variable. You would think this kind of behavior is obvious, but apparently it’s been allowed for all versions of PHP previous. Appararently without even warnings. You’ll get an error:

Fatal error: Only variables can be passed by reference ...

So you may think, where is this useful? Consider something short and concise like:

$only_element_we_care_about = array_pop(explode($seperator, $string));

You cannot do this now. The return value of a function is not a “variable” and cannot be passed by reference; a temporary variable needs to be used instead:

$tempory_variable = explode($seperator, $string); $only_element_we_care_about = array_pop($temporary_variable);

Yes, there are other ways to do the above, but that isn’t the point. The fix is not difficult, but it is a total complete pain to go back to legacy code and fix things like this.

Remind me to find another web programming language.

Like this article? Please support my writing! Flattr my blog (see my thoughts on Flattr), tip me via PayPal, or send me an item from my Amazon wish list.


midtoad's picture

Python - need I say more?

check out http://cherrypy as a framework, or, which builts on CherryPy. S

Samat's picture

I like Python a lot, but the web development frameworks are still way too fragmented.

I’ve seen and worked with TurboGears–and I like what I’ve seen so far. But at the moment, my main issue is that it’s not done yet. It’s not stabilized–there have been many API changes so far, which is my original complaint with PHP

So, time will tell.