Nesne değişkeni ayarlanmış olup olmadığını doğrulamak için nasıl

4 Cevap php

Ben ne zaman bir kullanıcı günlükleri oluşturulan bir User sınıf var

$user = new User($userId);

Şimdi bir kullanıcı oturum açmış olup olmadığını kontrol etmek için, ben yapıyorum denedim

if (isset($user)) {   // user is logged in

} else {   // user is not logged in

}

Ancak, isset() nesneleri ile çalışmak için görünmüyor? Ve ben de is_object() denedim. Lütfen tavsiye! Umarım zarif, belki de bunu yapmak için bir yol var

if ($user->isLoggedIn()) {

}

Zaman ayırdığınız için teşekkürler!

4 Cevap

isset(), işe nesne ya da olmamalıdır. Da kullanabilirsiniz

if ((isset($user)) and ($user instanceof User))

o ayarlanmış olup olmadığını kontrol etmek için and bu sınıfın bir nesnesi olup olmadığını User.

Sorun olduğunu

new User($userid);

always muhtemelen veritabanında $userid arar hangi, bu yapıcı olsa bile, size User nesne verecek, nesne yok sonucuna varabilir. Geçersiz $userid s kurucudaki istisna ve bir try / catch inşa yerine, sizin isset() testini kullanabilir veya testiniz var ve bunun için kontrol edebilirim kullanıcıların yapıcısı bir User->valid özelliğini ayarlayın.

Biraz daha fazla fikir için de bu soruya bakın: http://stackoverflow.com/questions/2214724/php-constructor-to-return-a-null/2214769

isset() da nesneler ile çalışır. : Aslında bu kadar uzun bir şey ile çalışacak

  1. Değişkeni geçerli kapsamda ilan edildi
  2. Değişken değeri null dışında farklı

Eğer kullanıcı sınıfı düzenlemek Eğer $ user-> isLoggedIn kullanabilirsiniz ()

class User {

private $logged_in = false;

...

public function login($uid) {
  ... login code
  $this->logged_in = true;
}

public function isLoggedIn() {
  return $this->logged_in;
}

...
}