2016-06-01 4 views
-2

私はPHP経由でフレームワークを使用せずにWebアプリケーションを開発しました。私のアプリケーションは、主にフロントエンドとバックエンドの2種類のファイルを持っています。最初のタイプには、HTML、PHP、CSS、JavaScript(jQuery)、バックエンド(PHPのみ)が含まれます。私は、などusersデータベーステーブル内のユーザーのWebセッション(PHPの機能session_start())を作成し、「ユーザ名」のようないくつかの変数を維持し、データベースと1クラスsessionとの接続を行うpg_db_connectionと呼ばれる一つのクラス、ユーザーのID私はどのアーキテクチャパターンを使用していますか?

pg_db_connectionを持っていますクラス$linkpg_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のどこかに再度書き込まれます。

既知のアーキテクチャパターンを使用しているのだろうかと思います。または、どのようなアーキテクチャパターンが記述されたアプローチに最も近いか?

+0

これは私にとっては普通のOOPのようです。特定のアーキテクチャパターンを見ることはできません。なぜあなたの質問がStackOverflowの話題になっていないので、それが下落しているのか疑問に思っているなら。この種の質問には[CodeReview](http://codereview.stackexchange.com/)があります。 – apokryfos

+0

@apokryfosこんにちは!この質問は、コードレビューについての話題にはならないでしょう。なぜなら、コード自体についてのプロパティ(「アーキテクチャパターン」)ではなく、レビュー/改善を求めているからです。あなたがそこにユーザーを指す前にSEサイトの話題になっているものがわかっていることを確認してください! – syb0rg

答えて

1

私の知っている限り、アプリケーションアーキテクチャは特に具体的なアーキテクチャパターンに従っていません。 通常、クライアント(フロントエンド) - サーバ(バックエンド)のアーキテクチャをとし、フロントエンドからJavaScript/Ajaxリクエストでデータを取得します。 は多くを学ぶために、このリンクをチェックアウト... 使用は、ビジネス・ロジック・コードのアーキテクチャを指定していない...ので、あなたはMVCパターンなどを使用するかどうかを知る方法がありません: https://softwareengineering.stackexchange.com/questions/158260/is-there-any-design-pattern-except-mvc-for-web

私はWebアプリケーションの設計上の決定のより良い理解を得るために、この書き込みアップを読み取るために、あなたをもをお勧めします。 Web Application Design Patterns

このリンクのリストから、私はあなたが以下のデザインパターンを使用すると言うでしょう:

  • 要求処理:ページコントローラ(どうやらあなたは、認証と承認を制御する単一のエントリクラスを持っている)

  • プレゼンテーション:監督プレゼンター(私は右のあなたを得た場合、サーバーの主なロジックを行い、しかし、あなたはその後、フロントエンドJavaScriptにいくつかのUI/JSON-コンテンツの交換作業をなど)に委任

  • ページレイアウト(UI):右/ツーステップのビューを(あなたはJSONのうち、jQueryを使っていくつかのHTMLを作成する変換しますか?)

  • 永続:トランザクションデータストア(あなたは(始める使用しているため)、コミット()、ロールバック())

いくつかの批判: pg_db_connectionは、あなたが使用する必要が暗示ポストグレストDBだと思いますか? ...データベースを簡単に切り替えることはできません...エラーが発生しやすくセキュリティが低い低レベルのSQLクエリに対処する必要があります... カスタムセッション処理では、落ちます... 終了について

header("Location: /html/admin/login.php?url=" . urlencode($_SERVER['REQUEST_URI'])) 

は...リダイレクトの脆弱性につながるかもしれない...と私も、あなたはlogin.phpに何をしているかを知られたくない...

。とにかく Best Practice for PHP exit()

、人々が実際にゼロから自分のWebアプリケーションのアーキテクチャを書き込み、むしろインスピレーションを-によって取得または使用しない理由があります:の出口()が次善であるなぜあなたはここで読むことをお勧めします PHPのフレームワーク:

  • 可能
    • メイク速度開発はあなたがオベを育ててみようよく組織化、再利用可能と保守性コード
    • を提供フレームワーク上で動作するWebアプリケーションとしてR時間は、スケーラブルで、サイト
    • プレゼンテーションの分離とロジック
    • を保証MVC(モデル - ビュー - コントローラ)パターンに従うの低レベルのセキュリティの心配からあなたを
    • スペア http://www.hongkiat.com/blog/best-php-frameworks/ も(thatsの前の言及のソース:
    • は、このブログの記事で提示現在、近代的なフレームワークのいくつかをチェックアウトなどのオブジェクト指向プログラミング・ツールなどの最新のWeb開発プラクティス
  • を推進しますedフレームワークの使用理由...) あなたのユースケースに合わないかもしれません。

    関連する問題