WGFController

概要

WGFController は、waggo で、コントローラーとしての位置づけられている基底クラスです。

サイトユーザーから見たWGFController

サイトユーザー(WGFControllerで構築されたウェブページ閲覧者)から見た WGFController は、以下のような様相となります。

sequenceDiagram participant U as Browser participant C as WGFController participant S as Transactional session participant G as $_SESSION note right of C:EXPC rect rgb(230,230,191) note right of U:初回アクセス U->>C:GET Note right of C: T=[random] C->>S:Init Transactional session (T=ABC123) S-->>G:Stanby for access<br>(EXPC+ABC123) activate G activate S rect rgb(255,255,255) C-->S:Readable/Writable Note right of C: $this->session->get()/set() C->>C:create() C->>C:initFirst() C->>C:init() C->>C:input() end deactivate S C->>U:200 OK (T=ABC123) end rect rgb(191,230,191) note right of U:継続アクセス U->>C:GET/POST (with T=ABC123 on URL) C->>S:Standby transactional session (T=ABC123) Note right of C: T=ABC123 S-->>G:Stanby for access<br>(EXPC+ABC123) activate S rect rgb(255,255,255) C-->S:Readable/Writable Note right of C: $this->session->get()/set() C->>C:create() C->>C:init() C->>C:input() or _execute() end deactivate S C->>U:200 OK (T=ABC123) end G->>G: GC deactivate G

初回アクセスと継続アクセス

WGFController は、大域セッション変数である $_SESSION の一部に、ユーザーが一連の処理(確認・変更・更新)を行うために必要となるトランザクショナルセッション領域で状態を管理します。

このトランザクショナルセッション領域が存在するかどうかにより、初回アクセス(First Access)か継続アクセス(Next Access)かの認識を行います。

WGFController は、初回アクセス時に、トランザクショナルセッション領域を確保・初期化し、その領域に一意のキー(トランザクショナルセッションキー)を割り当てます。

トランザクショナルセッション領域

トランザクショナルセッション領域は、ユーザーの一連の入力データや、コントローラー自体の処理状態の維持を行います。当然、このページを開発するデベロッパーによってもトランザクショナルセッションの内容を読み込み、書き換えをすることができます。

トランザクショナルセッション領域は、継続アクセスが一定時間なされない場合、自動的に破棄されます。

この仕組みは、当該ページを複数個同時に起動した場合に、処理状態の混在が行われないように分離することが目的です。

WGFController から派生したコントローラーのインスタンスからは、$this->session で、トランザクショナルセッション領域にアクセスすることができます。

初回アクセス

サイトユーザーが、WGFController から継承されたページに対して、GET/POSTでアクセスした場合、アクセスURLにトランザクショナルセッションキー(デフォルトではT)が付与されているか、また付与されている場合有効なトランザクショナルセッションキーであるかどうかを確認し、トランザクショナルセッションが作成されていない場合、初回アクセスと認識します。

初回アクセスの場合、トランザクショナルセッション領域を任意のキーで作成・初期化し、WGFController が生成するURLにこのキーを付与することによって、継続アクセスに備えます。

デフォルトで、T=XXXXXX というURLパラメータが付与されます。

継続アクセス

WGFController から継承されたページに対して、GET/POSTでアクセスした場合、アクセスURLにトランザクショナルセッションキー(デフォルトではT)が付与されていて、そのトランザクショナルセッションキーで指定されたトランザクショナルセッション領域が存在する場合、継続アクセスと認識します。