472 Stimmen

Rückgabewert einer Methode kann nicht im Schreibkontext verwendet werden

Ich würde denken, dass der folgende Code funktionieren sollte, aber das tut er nicht (Bearbeitet: Funktioniert jetzt in PHP 5.5+) :

if (!empty($r->getError()))

Donde getError() ist einfach:

public function getError()
{
    return $this->error;
}

Dennoch erhalte ich diese Fehlermeldung:

kann den Rückgabewert einer Methode nicht im Schreibkontext verwenden

Was soll das bedeuten? Ist das nicht nur eine Lektüre?

2voto

Das Problem ist folgendes: Sie wollen wissen, ob der Fehler nicht leer ist.

public function getError() {
    return $this->error;
}

Das Hinzufügen einer Methode isErrorSet() wird das Problem lösen.

public function isErrorSet() {
    if (isset($this->error) && !empty($this->error)) {
        return true;
    } else {
        return false;
    }
}

Mit diesem Code funktioniert das jetzt problemlos und ohne Hinweis.

if (!($x->isErrorSet())) {
    echo $x->getError();
}

1voto

Mike Punkte 21888

Ich bin mir nicht sicher, ob dies ein häufiger Fehler ist, aber wenn Sie etwas tun wie:

$var = 'value' .= 'value2';

führt dies ebenfalls zu demselben Fehler

Rückgabewert einer Methode kann nicht im Schreibkontext verwendet werden

Sie können nicht eine = und eine .= in der gleichen Erklärung. Sie können das eine oder das andere verwenden, aber nicht beides.

Beachten Sie, ich verstehe, dies ist unabhängig von der tatsächlichen Code in der Frage, aber diese Frage ist das Top-Ergebnis bei der Suche nach der Fehlermeldung, so wollte ich es hier der Vollständigkeit halber zu posten.

-3voto

quardas Punkte 591

Der alternative Weg, um zu prüfen, ob ein Array leer ist, könnte sein:

count($array)>0

Bei mir funktioniert es ohne diesen Fehler

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X