小编Fra*_*ook的帖子

您是否认为PHP中的错误形式是在类方法中访问超级全局变量?

在一个示例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)

php oop session login superglobals

4
推荐指数
2
解决办法
1094
查看次数

标签 统计

login ×1

oop ×1

php ×1

session ×1

superglobals ×1