我创建了一个包含用户信息的用户类。另外,我已经使用另一个名为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是类无法访问的,所以我应该将它传递给构造函数吗?还是有更好的方法来做所有这些?
答案 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
}
}
}