私はPHP経由でフレームワークを使用せずにWebアプリケーションを開発しました。私のアプリケーションは、主にフロントエンドとバックエンドの2種類のファイルを持っています。最初のタイプには、HTML、PHP、CSS、JavaScript(jQuery)、バックエンド(PHPのみ)が含まれます。私は、などusers
データベーステーブル内のユーザーのWebセッション(PHPの機能session_start()
)を作成し、「ユーザ名」のようないくつかの変数を維持し、データベースと1クラスsession
との接続を行うpg_db_connection
と呼ばれる一つのクラス、ユーザーのID私はどのアーキテクチャパターンを使用していますか?
pg_db_connection
を持っていますクラス$link
はpg_connect()
から得られたデータベースリソースです。このクラスには、query($query, $b_result = false, &$affected_rows = null)
,insert($table, $values, $columns = null, &$affected_rows = null)
,begin()
,commit()
,rollback()
などの一部の機能もあります。すべてのフロントエンドファイルの先頭で、私はタイプsession
のオブジェクトを作成し、実行します。
$db = new pg_db_connection($db_config,$log_mng);
$session = new session($db);
#if the session is not active go to login.php frontend and force the user to login
if(!$session->is_active())
{
header("Location: /html/admin/login.php?url=" . urlencode($_SERVER['REQUEST_URI']));
exit;
}
# If session is active proceed below
# Auto refresh the session
$session->autoReresh();
# Check if the current user have privileges to access this frontend file (second param is file path, third - file name)
if(!($session->passpermit($session->user_id(), $_SERVER['SERVER_ADDR'], dirname(__FILE__)."/", basename(__FILE__))))
{
header("Location: /html/admin/access_denied.html");
exit;
}
Sessionクラスストアuser_id, username
と$_SESSION
でより多くを。 Webユーザーにアクセスする権限を持つファイルはデータベースに保存されるため、データベースへの接続が必要です。このフロントエンドファイルに動的データをロードする場合は、jQueryのpost
またはload
関数を使用して、1つのバックエンドファイルを呼び出します。このバックエンドファイルにはpg_db_connection
が含まれており、必要に応じていくつかのデータベースクエリを実行します.HTMLタグでラップしたり、何らかの形で配列をフォーマットしてからjson_encode
としたりして、HTMLまたはJSONを取得します。フロントエンドファイル次に、jqueryのロードまたはポストコールバックメソッドで、このHTMLが必要な場所に書き込まれるか、JSONが何とかHTMLに変換され、HTMLのどこかに再度書き込まれます。
既知のアーキテクチャパターンを使用しているのだろうかと思います。または、どのようなアーキテクチャパターンが記述されたアプローチに最も近いか?
これは私にとっては普通のOOPのようです。特定のアーキテクチャパターンを見ることはできません。なぜあなたの質問がStackOverflowの話題になっていないので、それが下落しているのか疑問に思っているなら。この種の質問には[CodeReview](http://codereview.stackexchange.com/)があります。 – apokryfos
@apokryfosこんにちは!この質問は、コードレビューについての話題にはならないでしょう。なぜなら、コード自体についてのプロパティ(「アーキテクチャパターン」)ではなく、レビュー/改善を求めているからです。あなたがそこにユーザーを指す前にSEサイトの話題になっているものがわかっていることを確認してください! – syb0rg