Can't use method return value in write context
php
Solution
`empty()` needs to access the value by reference (in order to check whether that reference points to something that exists), and PHP before 5.5 didn't support references to temporary values returned from functions.
However, the real problem you have is that you use `empty()` at all, mistakenly believing that "empty" value is any different from "false".
Empty is just an alias for `!isset($thing) || !$thing`. When the thing you're checking always exists (in PHP results of function calls always exist), the `empty()` function is nothing but a negation operator.
PHP doesn't have concept of emptyness. Values that evaluate to false are empty, values that evaluate to true are non-empty. It's the same thing. This code:
$x = something();
if (empty($x)) …
and this:
$x = something();
if (!$x) …
has always the same result, in all cases, for all datatypes (because `$x` is defined `empty()` is redundant).
Return value from the method always exists (even if you don't have `return` statement, return value exists and contains `null`). Therefore:
if (!empty($r->getError()))
is logically equivalent to:
if ($r->getError())
Problem
I would think the following piece of code should work, but it doesn't (Edited: Now works in PHP 5.5+): ``` if (!empty($r->getError())) ``` Where `getError()` is simply: ``` public function getError() { return $this->error; } ``` Yet I end up with this error: can't use method return value in write context What does this mean? Isn't this just a read?