PHP-Fehler nicht nutzen-Methode return > value in write context
Bin ich immer diesen Fehler in einer PHP-Klasse...
Fatal error: Can ' T use method return
value in write context in
C:\webserver\htdocs\friendproject2\includes\classes\User.class.php
in Zeile 35
Hier ist der unruhige Teil.
if(isset($this->session->get('user_id')) && $this->session->get('user_id') != ''){
//run code
}
Dieser code ist in meinem contrustor, ist ein Wert, der nicht bereits für $this->session->get('user_id') dann false zurück, anstatt eine Zahl. So wie Sie sehen können ich war in der Hoffnung zu überprüfen, ob der Wert eine Zahl ist oder nicht oder auch gar nicht gesetzt.
Jede Hilfe bei der Behebung geschätzt.
Ich habe mich daran gewöhnt Rückgabe von null-Methode erwartet werden, die Werte zurückgeben, wenn kein Wert vorhanden ist, und liefern nur Boolesche Werte (true/false) von Methoden zurückgeben sollte eine Angabe darüber, ob eine operation fehlgeschlagen/erfolgreich. Möchten Sie vielleicht concider mit diesem Paradigma zu. Die benifit ist, dass, vor allem, wenn eine Methode erwartet eine Zahl zurückgeben, die Sie nicht Fehler, die den Wert null für false.
InformationsquelleAutor JasonDavis | 2010-01-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht verwenden, isset für das Ergebnis einer Funktion. Betrachten Sie den folgenden code statt:
Denken Sie daran, dass, wenn Ihre Anwendung ermöglicht eine user_id mit dem Wert 0, wird dies fehlschlagen, da 0 zu false ausgewertet wird. Eine user_id 0 sein könnte, unwahrscheinlich, dass in vielen Anwendungen, aber wollte trotzdem darauf hingewiesen haben.
Hmmm, jetzt lese ich die OP ' s Frage genauer, ich sehe, er erwähnt die Methode gibt false zurück, wenn es keine user_id. Noch, vielleicht: if( false !== $dies->session->get('user_id') ) ... vielleicht ein wenig mehr zu sparen.
InformationsquelleAutor St.Woland
Aus der PHP-Handbuch.
InformationsquelleAutor Alix Axel
Können Sie nicht verwenden
isset
auf eine Funktion. Da jedochfalse
,0
, und''
alle gleichsetzen zu einer falsey Anweisung, schreiben Sie Ihren test so:Diese Weise haben Sie Ihren Testfall ausgeführt und zugewiesen, die variable in einem Schritt.
if($id = myFunc() && $id > 0)
ist logisch äquivalent zuif($id = (myFunc() && $id > 0))
, während das, was Sie wahrscheinlich meinen, istif(($id = myFunc()) && $id > 0)
. Wollte nur werfen, dass da draußen, denn es ist nur eine kleine Fehler, die ich finde mich jetzt und dann, und es kann schwierig sein, zu fangen, wenn Sie nicht wissen, zu suchen.InformationsquelleAutor Doug Neiner