检查另一个类中的类实例

时间:2011-07-01 17:35:07

标签: php class token

我创建了一个包含用户信息的用户类。另外,我已经使用另一个名为LoggedInUser的类扩展了该类。

LoggedInUser的要点是能够通过简单地检查LoggedInUser对象是否存在来轻松判断用户是否已通过身份验证并登录:

class User {
 //properties
}

class LoggedInUser extends User {
 //some additional token stuff
}

$isLoggedIn = new LoggedInUser();

class Router {
 public function gotoRoute() {
  if($isLoggedIn) {
   // perform the action
  }
 }
}

据我所知,$ isLoggedIn是类无法访问的,所以我应该将它传递给构造函数吗?还是有更好的方法来做所有这些?

3 个答案:

答案 0 :(得分:2)

在我看来,你有两种选择。您可以将LoggedInUser传递给Router::__construct()。或者您可以在LoggedInUser

中创建Router::__construct()

第一个选项:

$LoggedInUser = new LoggedInUser();
$Router = new Router($LoggedInUser);

第二个选项

$Router = new Router();

// in router class file
__construct() {
    $this->YourProperty = new LoggedInUser();
}

我喜欢第一种选择。它被称为Dependency Injection

答案 1 :(得分:0)

我不完全确定这是否是你所追求的但是如何使$ isLoggedIn成为一个私有变量,以便类可以检查它的存在?

private $ isLoggedIn = new LoggedInUser();

答案 2 :(得分:0)

首先,变量始终是类的区域设置。您不能在类之外分配变量然后调用它。

在这样一个简单的脚本中,这就是我要做的事情:

class Router {
    public function gotoRoute() {
        $isLoggedIn = $isLoggedIn = new LoggedInUser();
        if( $isLoggedIn instanceof User ) {
        // perform the action
        }
    }
}