BEAR.Sunday 1.0 alpha
BEAR.Sunday 1.0の概要を変更点を中心に紹介します。主にこれまでの0.x
がある程度理解されている方を対象にかいています。
はじめに
以下の2つのコンセプトに注力するために、量的なものを大胆に削っています。
- HTTPアプリケーションのためのアーキテクチャ
- アプリケーション制約を提供する
(まずは1.0リリースのために一旦捨てて、必要があれば別パッケージとして復活させていく方針にします。例えばデバック関連はBEAR.DevPackageの一部としてリリースします。)
概要
Package versions
セマンティックバージョニングです。
メジャーバージョンはそれぞれ上がり、BCブレイクが存在します。
Ray.Di 2.0
Ray.Aop 2.0
BEAR.Resource 1.0
BEAR.Sunday 1.0
BEAR.Package 1.0
BEAR.Skeleton 1.0
1.0
がリリースされたらBCブレイクなしで継続するつもりでいます。(2.0
は無い予定です)
Framework Extension
フレームワークの機能拡張を4つにしぼりました。アプリケーション、ルーター、リプレゼンテーション、トランスファーの4つです。それぞれ、構成、入力、表現、出力に対応します。
つまりDIとAOPでアプリケーションを構成して(App)、リソースのリクエストを受け取り(Router)、アプリケーション状態を変更してその表現を求め(Representation)、レスポンスとして出力(Transfer)します。
REST (Representational State Transfer)をそのままフレームワークとして拡張ポイント
Context Module
コンテキストに応じてアプリケーションの振舞いは変わります。
- Hal
- Api
- Cli
- Prod
Plugin Module
コンテキストによらないアプリケーションの拡張機能です。現在はAuraルーターと HAL 関連のみがあります。
- Web Router
- Aura Router
- Router Collection
- Hal Render / Transger
Application
アプリケーションのメタ情報はそれぞれの定数(tmp_dir)などではなく、1つのオブジェクトにまとめられました。同様に各種の設定値は文字列として扱われるのではなくて、オブジェクトのプロパティとして扱われることが望まれます。
アプリケーションブートストラップは基本的にはコンテキストによらず同一です。
スケルトンはよりシンプルになりました。同時に複数のアプリケーションが機能します。
- Application meta info - AppMeta
- Application factory Bootstrap
- Application skeleton BEAR.Skeleton
- Application bootstrap script bootstrap.php
主な変更点
Ray.Aop
- [MOD] カスタムMatcher
- [ADD] namespaceの継承
- [MOD] 速度、安定性
Ray.Di
- [MOD] インターセプターのバインドがオブジェクトではなくクラス名に。束縛順を気にする必要がなくなりました。
- [DEL] AbstractModule::requestInjection();
- [DEL] DI logger
- [DEL] DI compiler
BEAR.Resource
- [DEL] シグナルパラメーター
- [DEL] httpアダプター(guzzle)
- [DEL] sync request
BEAR.Sunday
- [MOD] アノテーション、Extention、Provideの整理
- [DEL] Aura WebContext
BEAR.Package
- [DEL] Devツール
- [DEL] DB, Form, Sessionなどのライブラリ
- [DEL] HTMl出力
- [DEL] デモアプリ
- [DEL] アプリケーションリフレクター
- [ADD] コンテキストによるアプリケーションのデコレーション
検討点
-
AppMeta
- 名前はこれでよいか? (AppPropertiesやAppConfigはどうか) -
bootsrap.php
- 名前はこれでよいか? (app_scriptやrun.phpはどうか) - 最低限のHTMLコンテキストを含めるべきではないか?
- そうならTwig ? Aura.View ? moustache ?
- 最低限のDAOを含めるべきではないか?
- そうならDoctrine Dbal ? Aura.Sql ?
- アプリケーションレイアウトはこれでよいか?
-
定数
ファイルを完全に外してよいか? -
0.x
にあったscript/instance.php
ファイルは要らないか? - アプリケーションスケルトンの
tests
の内容
最後に
この記事はgithubにissue #159として上げました。