在一个示例login()函数中class Account.
class Account {
/* Class variables */
public function login() {
if(isset($_POST['username']) && isset($_POST['password']))
return $this->_formLogin();
else if(isset($_SESSION['accountId']))
return $this->_sessionLogin();
else if(isset($_COOKIE['username']) && isset($_COOKIE['password']))
return $this->_cookieLogin();
else return false;
}
private function _formLogin() {
//perform login actions using $_POST data
}
/* All that other stuff */
}Run Code Online (Sandbox Code Playgroud)
试着忽略对数据清理,密码腌制等看不见的方法的任何担忧.严格关注login(),这是全球访问不好的juju?我通常避免在类中使用PHP超级全局变量,但我想不出在这种情况下不这样做的好理由.
我可以理解为什么你不希望魔术在背景中与全局变量跨类交互,但是这些全局变量是内置在PHP中的,不会被类修改,只能由这个类使用.
这将导致您需要用户登录的页面的开头:
$user = new Account($whatever, $objects, $we, $depend, $on);
if($user->login()) {
//Do this stuff when logged in
} …Run Code Online (Sandbox Code Playgroud)