TOP

還暦過ぎのITはつらいよ!

プログラミング

phpフレームワーク自作5

リクエスト処理

大根の畑雪景色

リクエスト処理

サーバから送り出されるデータからデータを読み取り、加工処理しブラウザへ出力する処理の流れはデータそのもののチェックが必要です。なぜならばリクエストデータは改ざん可能なものであり、信頼できるものではないと考える必要があるからです。アプリケーションで処理される外部リクエストされたデータはすべてこのリクエスト処理の中でバリデーションされたものを使うことになります。

リクエスト処理の流れ
リクエスト処理の流れ

 

  1. htdocs内のアプリケーション基点ファイルからDispacheクラスのインスタンスを生成する。
  2. Dispachメソッドを呼び出す。
  3. ##Requestクラスのインスタンスを生成する。##は(アドレスバー内の)コントローラ名
  4. ##Requestクラスの親クラスである、Requestクラスのコンストラクタが実行される。
  5. Requestクラスのコンストラクタではpost送信があればPostオブジェクトが生成され、get送信であればQuerystringオブジェクトが生成される。
  6. PostオブジェクトあるいはQuerystringオブジェクトの親クラスであるRequestVariablesのコンストラクタが実行される。
  7. RequestVariablesのコンストラクタではsetValueという抽象メソッドが呼び出され、生成されているPostオブジェクトまたはQueryStringオブジェクトのsetValueメソッドが実行される。
  8. setValueメソッドではRequestクラスで渡されたPOST変数またはGET変数というグローバル変数が引数としてセットされ、親クラスであるRequestVariablesクラスの$_postsあるいは$_getsと$_valuesメンバーにリクエストデータが代入される。

Request.php


リクエストされたデータを取得し、処理を掌るクラスです。バリデーションする共通する関数が収められています。
アプリケーション独自のバリデーションはその子クラスに委ねるような継承関係を形成することになります。

Post.php


POSTデータを取得するクラスです。

QueryString.php


GETデータを取得するクラスです。

ReqestVarigble.php


Postクラス、QueryStringクラスの親クラスになります。また、子クラスのインスタンス生成にSingletonデザインパターンとしての実装を提供しております。リクエストされたデータを保持するオブジェクトは複数のインスタンスを必要とせず、複数のインスタンスが実装した場合のデータの上書き、干渉を避けるためのコーディングとなっております。また、リクエストデータを利用するときのデータの存在チェックhas()も行っております。
また、子クラスとしてsessionクラスを定義してもよさそうですが、セッション機能は必ずしも実装する必要のないアプリケーションもあるので、タイアップせず、独自に定義することにしております。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください