PHP设计建议

时间:2011-10-18 23:25:07

标签: php

我一直在网站上工作,目前处于登录/会话处理阶段。

我想知道你认为什么是更好的设计。 (这个网站将向公众开放,因此它也应该是用户友好的。)

P.S。对不起,如果这不是正确的php'约定',我习惯于c / c ++编程。

设计#1:

define("LOGGED_IN", false);
define("USERNAME", "Guest");
define("PASSWORD", "");
define("PLAYER_ID", -1);

...

if (!LOGGED_IN) {
     header("Location: login.php");
} else {
   ...
}

...

if ({condition for successful login}) {
    define("LOGGED_IN", true);
    define("USERNAME", "AJ");
    define("PASSWORD", "nottellingu");
    define("PLAYER_ID", 1);
}

...

printf("Hi, %s. Have a nice day.", USERNAME);  

设计#2:

class user {
    private $id;
    private $logged_in;
    private $username;
    private $password;

    public function __construct($id, $username, $password, $logged_in = false) {
        $this->id = $id;
        ... blablabla
    }

    public function get_id() {
        return $this->id;
    }

    ... blablabla (pretend i declared all needed functions)
}

...

if ({condition for successful login}) {
    $id = get_userid($_SESSION['USERNAME']]);
    $user = new user($id, $_SESSION['USERNAME'], $_SESSION['PASSWORD'], true);
}

...

printf("Hi, %s. Have a nice day.", $user->get_username());  

你也可以给我你的设计。

由于

2 个答案:

答案 0 :(得分:1)

我认为无论哪种方式都可以。这实际上取决于你想要完成的事情。如果您要不断提取用户信息,那么课程可能会更好。如果您只需要一些基本的东西,如ID和名称,以及他们是否登录,第一个选项更简单,并且可以正常工作。

当你可以用一种简单的方式完成某些事情时,没有必要复杂化。

答案 1 :(得分:1)

IMO,设计方法#2更好。您不仅可以获得与用户相关的任何内容的封装,而且它也是模块化的,因此您可以在代码库中的任何位置引用任何属性。

您可能还想进行一些谷歌搜索,看看是否有可以使用的独立用户登录系统,而不是重新发明轮子。