0

这个问题可能听起来很奇怪,但我的一个项目有一个简单的基于会话的小型登录系统(PHP+MySQL),我想知道将用户存储在对象中是否有意义。我可以想象这样的情况,这样做可能有用,但是......我真的不知道。如果是微博系统,这有什么不同吗?

我认为可以User定义一个类,从 MySQL 表中加载属性,并且它可以具有类似getUserName()orlogOut()或的方法/函数addPost()

我问自己这个问题的首要原因是,我对如何将对象传递给会话一无所知,而且所有这些面向对象的东西对我来说也有点新鲜。我不完全确定什么时候考虑 OOP 什么时候不考虑。

如果你能给我一些关于这个话题的建议,或者任何有用的东西,那将是非常有帮助的。谢谢!:)

4

3 回答 3

3

由于 PHP 5.3/5.4 中的对象没有显着的开销,我建议您以面向对象的风格为所有内容编写代码,除了在键盘中的简单实验。

至于身份验证系统,我将其分为两部分:

这是一个简单的 API 示例,您可以尝试将其用作代码的基础:

$user = new User;
$mapper = new UserMapper( $pdo );

$user->setName( $_POST['username'] );
$mapper->fetch( $user ); 

if ( $user->isAvailable() && $user->matchPassword( $_POST['password'] ))
{
    $user->setLastLogin( time() );
    // here you put interaction with session
}
else
{
    $user->addFailedAttempt();
    if ( $user->getAttempts() >= 5 )
    {
        $user->setStatus( User::STATUS_LOCKED );
    }
}

$mapper->store( $user );

您必须了解 OOP 的目标是代码的可维护性和可读性。我假设您可以在没有看到每个方法的确切实现的情况下弄清楚该代码中发生了什么。

于 2013-01-06T02:00:40.047 回答
0

使用类将使您的代码更具可读性并且更容易更改/修改/升级。它还将减少代码大小。但是您也可以在没有类或 OOP 的情况下在 php 文件中定义 dos 函数,只需函数并在每次需要时包含它们。如果您使用类,则在函数之间传递整个 Web 应用程序中的数据会更容易,整个用户对象将作为一个对象。类对性能完全没有影响。这就是我现在要说的。

于 2013-01-06T00:51:00.280 回答
0

首先回答您的问题:我只会存储在数据库中查找用户所需的那些信息。如果您可以通过数据库加载它,您还可以在每个请求中实例化一个新的用户对象,我认为这更好,因为数据可能会更改,如果用户数据更改,您必须更新数据库和会话。因此,从数据库加载您的用户并在每个请求上创建一个实例。

第二:看一下某种 orm(对象-关系-映射系统),如学说 2 或类似的。这些系统完全按照您对用户对象的要求进行操作。

于 2013-01-06T00:51:38.200 回答