BEAR.Sundayとは

BEAR.SundayとはPHPのWebアプリケーションフレームワークです。 BEAR.Sundayの目標は、標準に準拠し高品質で疎結合なRESTfulアプリケーションのフレームワークを提供することです。

フレームワーク

BEAR.Sundayは3つのオブジェクトフレームワークで構成されています。

Ray.Di依存関係逆転の原則に基づいてオブジェクトを結びます。インターフェイスに対するプログラミングは、コンテキストによる振る舞いや将来の変更に柔軟です。

Ray.Aopアスペクト指向プログラミングで本質的関心と横断的関心を結びます。アノテーションでログや認証を指定することができます。

BEAR.Resourceは情報をリソースにして、ハイパーメディア制約で結びます。アプリケーション内部の情報もWebの世界と同じように統一されたURIとメソッドで扱うことができます。

ライブラリ

BEAR.Sundayアプリケーションフレームワークは一般的なMVCフレームワークと違って認証やデータベースなどの特定の仕事のための独自のライブラリを持ちません。 高品質なAuraフレームワークのライブラリや、Packagistで利用可能なサードパーティのライブラリを使用します。

リソース指向パターン

BEAR.SundayはMVCパターンではなく、RESTfulアプリケーション用のResource-Method-Representationパターンのバリエーションです。

4R

ステートレスなリクエストはMethodResource状態をつくり、内部のRendererがRepresentationにしてレスポンスになります。

コンポーネント

Resource

WebのリソースをオブジェクトにしたものがResourceです。アプリケーション内で固有のURIやHTTPに準じたリクエストインターフェイスを持ち、オブジェクトはサービスとして機能します。 ハイパーメディアとして他のリソースを@Embedしたり@Linkすることができます。

Method

Webからのリクエストはユニークにルートされます。HTTPメソッドに応じたパラメーターで呼ばれ、Method内で自身のリソースプロパティを構成します。 MVCのコントローラーのようにドメインモデルや他のリソースにアクセスする事もあります。

Methodの構造はオニオンアーキテクチャクリーンアーキテクチャのバリエーションの1つです。 認証やバリデーション、ログなどのユースケースはアスペクト指向プログラミングでMethodに任意の層でラップされます。

Representation

個別に注入されたRendererは文字列評価時にリソースの状態をRepresentationにします。MethodではRepresentationに関心を持ちません。Representationになったリソースはリソース内のResponderでクライアントに出力されます。

Clean Method

コラボレーション

  1. ウェブハンドラーはクライアントリクエストをアプリケーションのリソースリクエストに変更します。

  2. リクエストを受けたResource内のMethodは自身を構成します。

  3. 文字列評価でResource内のレンダラーがリソース状態をRepresentationにします。

  4. Resource内のレスポンダーがRepresentationをクライアントにレスポンスとして返します。

なぜ新しいパターン?

従来のパターンはオブジェクト指向パラダイムのアプリケーションをHTTPにマップしたものです。 純粋なコントローラーはHTTPやRESTに対して無知です。

新パターンではHTTPにマップするオブジェクトを作成します。RESTをフレームワークとして、適合するコンポーネントを作成します。

RESTの力を引き出し、HTTPをアプリケーションプロトコルとして扱うリソース指向のためのパターンです。