0

この質問は奇妙に聞こえるかもしれませんが、私のプロジェクトの1つに単純なセッションベースのログインシステム(PHP + MySQL)があり、ユーザーをオブジェクトに格納することに意味があるかどうか疑問に思いました。そういう状況が想像できたのですが…よくわかりません。たとえばマイクロブログシステムの場合、違いはありますか?

MySQLテーブルからロードされたプロパティで定義されたクラスがあり、またはまたはUserのようなメソッド/関数を持つことができると思います。getUserName()logOut()addPost()

私がこの質問を自問した最大の理由は、オブジェクトをセッションに渡す方法についての手がかりが1つもないことです。さらに、このオブジェクト指向のものはすべて、私にとっても少し新しいものです。いつOOPを考えるべきか、いつ考えるべきでないかについては完全にはわかりません。

トピックについてのアドバイスや何か役に立つことがあれば、それは非常に役に立ちます。ありがとう!:)

4

3 に答える 3

3

PHP 5.3 / 5.4ではオブジェクトに大きなオーバーヘッドがないため、コードパッドでの簡単な実験を除いて、すべてのオブジェクト指向スタイルでコードを記述することをお勧めします。

認証システムに関しては、私はそれを2つの部分に分割しました。

コードの基礎として使用できる簡単な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ファイルでdoes関数を定義することもできます。関数だけを定義して、必要なときにいつでも含めることができます。クラスを使用すると、関数間でWebアプリケーション全体のデータを渡すのが簡単になり、ユーザーオブジェクト全体がオブジェクトとして使用されます。クラスはパフォーマンスにまったく影響しません。今のところ私が言わなければならないのはそれだけです。

于 2013-01-06T00:51:00.280 に答える
0

まず最初にあなたの質問に答えます:私はデータベースでユーザーを見つけるために必要な情報だけを保存します。データベースを介してロードできる場合は、リクエストごとに新しいユーザーオブジェクトをインスタンス化することもできます。これは、データが変更される可能性があり、ユーザーデータが変更された場合は、データベースとセッションを更新する必要があるためです。したがって、データベースからユーザーをロードし、リクエストごとにインスタンスを作成します。

2番目:doctrine2などのようなある種のorm(Object-Relational-Mappingシステム)を見てください。これらのシステムは、ユーザーオブジェクトで必要なことを正確に実行します。

于 2013-01-06T00:51:38.200 に答える