私は演習として PHP アプリケーションを開発していますが、どこでセッションを作成するのがより正しいのか疑問に思っていました。
コントローラーでログイン データを受け取り、そのユーザーが存在するかどうか、およびパスワードが一致するかどうかをモデルに尋ねます。この同じコントローラーでセッションの作成を処理する必要がありますか? 私はこれに対する良い答えを見つけることができません。
私は演習として PHP アプリケーションを開発していますが、どこでセッションを作成するのがより正しいのか疑問に思っていました。
コントローラーでログイン データを受け取り、そのユーザーが存在するかどうか、およびパスワードが一致するかどうかをモデルに尋ねます。この同じコントローラーでセッションの作成を処理する必要がありますか? 私はこれに対する良い答えを見つけることができません。
そのストレージ メディアを初めて使用するときに、セッションを初期化する必要があります。
最も可能性が高いのは次のとおりです。
namespace Mapper;
class Session
{
public function prepare()
{
session_set_cookie_params( ... ); // if needed
session_start();
}
public function store(SomeInterface $object) { ... }
public function retrieve(SomeInterface $object) { ... }
}
..prepare()
メソッドは、ファクトリが「一般的なアプリケーション」にリリースする前にセッションインスタンスで呼び出されます。
基本的に、モデル レイヤーの観点から見ると、セッションは単なる別のタイプのストレージであり、ある種のマッパーで利用します。このマッパーは、ファクトリを使用してアプリケーション全体で共有できます。これにより、モデル レイヤーのすべての部分がセッションの抽象化に同じオブジェクトを使用することが保証されます。
コントローラーは、セッションがモデルレイヤー内のどこかで使用されていることを認識する必要さえありません。コントローラーが認識しているモデル レイヤーの一部のみをサービスにする必要があります。これにより、コントローラーはモデル レイヤーの状態を変更します。
アプリケーションにブートストラップ ファイルがある場合は、そこでセッションを開始できます。セッションクラスに自動開始がある場合、ほとんどの場合、気にする必要はありません。MVC がインターセプター パターンを実装している場合は、そのプラグインを作成して、セッションを開始できます。
コントローラーの作成セッションは冗長なコードを生成し、重要な原則の 1 つは DRY (繰り返さないでください) です。