phpフレームワーク自作5
リクエスト処理
リクエスト処理
サーバから送り出されるデータからデータを読み取り、加工処理しブラウザへ出力する処理の流れはデータそのもののチェックが必要です。なぜならばリクエストデータは改ざん可能なものであり、信頼できるものではないと考える必要があるからです。アプリケーションで処理される外部リクエストされたデータはすべてこのリクエスト処理の中でバリデーションされたものを使うことになります。
- htdocs内のアプリケーション基点ファイルからDispacheクラスのインスタンスを生成する。
- Dispachメソッドを呼び出す。
- ##Requestクラスのインスタンスを生成する。##は(アドレスバー内の)コントローラ名
- ##Requestクラスの親クラスである、Requestクラスのコンストラクタが実行される。
- Requestクラスのコンストラクタではpost送信があればPostオブジェクトが生成され、get送信であればQuerystringオブジェクトが生成される。
- PostオブジェクトあるいはQuerystringオブジェクトの親クラスであるRequestVariablesのコンストラクタが実行される。
- RequestVariablesのコンストラクタではsetValueという抽象メソッドが呼び出され、生成されているPostオブジェクトまたはQueryStringオブジェクトのsetValueメソッドが実行される。
- setValueメソッドではRequestクラスで渡されたPOST変数またはGET変数というグローバル変数が引数としてセットされ、親クラスであるRequestVariablesクラスの$_postsあるいは$_getsと$_valuesメンバーにリクエストデータが代入される。
Request.php
リクエストされたデータを取得し、処理を掌るクラスです。バリデーションする共通する関数が収められています。
アプリケーション独自のバリデーションはその子クラスに委ねるような継承関係を形成することになります。
Post.php
POSTデータを取得するクラスです。
QueryString.php
GETデータを取得するクラスです。
ReqestVarigble.php
Postクラス、QueryStringクラスの親クラスになります。また、子クラスのインスタンス生成にSingletonデザインパターンとしての実装を提供しております。リクエストされたデータを保持するオブジェクトは複数のインスタンスを必要とせず、複数のインスタンスが実装した場合のデータの上書き、干渉を避けるためのコーディングとなっております。また、リクエストデータを利用するときのデータの存在チェックhas()も行っております。
また、子クラスとしてsessionクラスを定義してもよさそうですが、セッション機能は必ずしも実装する必要のないアプリケーションもあるので、タイアップせず、独自に定義することにしております。
- タグ:
- phpframe