So überprüfen Sie, ob die Objektvariable gesetzt ist

8

Ich habe eine Klasse User , die erstellt wird, wenn sich ein Benutzer anmeldet

%Vor%

Um zu überprüfen, ob ein Benutzer angemeldet ist, habe ich versucht,

zu tun %Vor%

isset() scheint jedoch nicht für Objekte zu funktionieren? Und ich habe auch is_object() ausprobiert. Bitte beraten! Hoffentlich gibt es einen Weg, dies elegant zu machen, vielleicht

%Vor%

Danke für Ihre Zeit!

    
axsuul 16.02.2010, 19:15
quelle

4 Antworten

8

isset() sollte funktionieren, Objekt oder nicht. Sie können auch

verwenden %Vor%

um zu überprüfen, ob es und gesetzt ist, ob es ein Objekt der Klasse User ist.

    
Pekka 웃 16.02.2010, 19:17
quelle
4

Das Problem ist das

%Vor%

wird immer Ihnen ein Objekt User geben, obwohl sein Konstruktor, der wahrscheinlich $userid in der Datenbank nachschlägt, zu dem Schluss kommen kann, dass das Objekt nicht existiert. Sie können eine Exception im Konstruktor für das ungültige $userid s ausgeben und ein try / catch -Konstrukt anstelle von isset() test verwenden oder eine User->valid -Eigenschaft im Konstruktor der vorhandenen Benutzer setzen und überprüfen dafür in Ihrem Test.

Siehe auch diese Frage für weitere Ideen: PHP-Konstruktor, um einen NULL zurückzugeben

    
Wim 16.02.2010 19:19
quelle
2

Wenn Sie Ihre Benutzerklasse bearbeiten, können Sie $ user- & gt; isLoggedIn ()

verwenden %Vor%     
thetaiko 16.02.2010 19:19
quelle
1

isset () funktioniert auch mit Objekten. In der Tat wird es mit allem funktionieren, solange:

  1. Die Variable wurde im aktuellen Bereich
  2. deklariert
  3. Der Variablenwert ist anders als NULL
AlexV 16.02.2010 19:20
quelle

Tags und Links