代码之家  ›  专栏  ›  技术社区  ›  axsuul

如何验证是否设置了对象变量

  •  9
  • axsuul  · 技术社区  · 16 年前

    User 在用户登录时创建的类

    $user = new User($userId);
    

    现在,为了检查用户是否已登录,我尝试

    if (isset($user)) {   // user is logged in
    
    } else {   // user is not logged in
    
    }
    

    然而, isset() 似乎对对象不起作用?我也试过了 is_object() . 请告知!希望有一个方法可以做到优雅,也许

    if ($user->isLoggedIn()) {
    
    }
    

    谢谢你的时间!

    4 回复  |  直到 16 年前
        1
  •  11
  •   Pekka    16 年前

    isset() 不管反对与否,都应该有效。你也可以使用

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

    User .

        2
  •  4
  •   Community Mohan Dere    9 年前

    问题是

    new User($userid);
    

    总是 User 对象,即使它是构造函数 $userid $用户ID s和使用 try / catch isset() 测试或设置 User->valid 属性,并在测试中检查该属性。

    有关更多想法,请参见此问题: PHP constructor to return a NULL

        3
  •  2
  •   thetaiko    16 年前

    class User {
    
    private $logged_in = false;
    
    ...
    
    public function login($uid) {
      ... login code
      $this->logged_in = true;
    }
    
    public function isLoggedIn() {
      return $this->logged_in;
    }
    
    ...
    }
    
        4
  •  1
  •   AlexV    16 年前

    isset() 也适用于对象。事实上,只要:

    1. 变量已在当前作用域中声明