パッケージ
アプリケーションは独立したcomposerパッケージです。
フレームワークは依存としてcomposer installでインストールしますが、他のアプリケーションも依存パッケージとして使うことができます。
アプリケーション・パッケージ
構造
BEAR.Sundayアプリケーションのファイルレイアウトはphp-pds/skeletonに準拠しています。
bin/
実行可能なコマンドを設置します。
BEARのリソースはコンソール入力とWebの双方からアクセスできます。 使用するスクリプトによってコンテキストが変わります。
php bin/app.php options '/todos' # APIアクセス(appリソース)
php bin/page.php get '/todos?id=1' # Webアクセス(pageリソース)
php -S 127.0.0.1 bin/app.php # PHPサーバー
コンテキストが変わるとアプリケーションの振る舞いが変わります。 ユーザーは独自のコンテキストを作成することができます。
src/
アプリケーション固有のクラスファイルを設置します。
public/
Web公開フォルダです。
var/
log、tmpフォルダは書き込み可能にします。var/wwwはWebドキュメントの公開エリアです。
confなど可変のファイルを設置します。
実行シーケンス
- コンソール入力(
bin/app.php、page.php)またはWebサーバーのエントリーファイル(public/index.php)がbootstrap.phpを実行します。 bootstrap.phpでは実行コンテキストに応じたルートオブジェクト$appを作成します。$appに含まれるルーターは外部のHTTPまたはCLIリクエストをアプリケーション内部のリソースリクエストに変換します。- リソースリクエストが実行され、結果がクライアントに転送されます。
フレームワーク・パッケージ
フレームワークは以下のパッケージから構成されます。
ray/aop
Javaの AOPアライアンス に準拠したAOPフレームワークです。
ray/di
google/guice スタイルのDIフレームワークです。ray/aopを含みます。
bear/resource
bear/sunday
フレームワークのインターフェイスパッケージです。bear/resourceを含みます。
bear/package
bear/sundayの実装パッケージです。bear/sundayを含みます。
ライブラリ・パッケージ
必要なライブラリ・パッケージをcomposerでインストールします。
| Category | Composer package | Library |
| ルーター | ||
| bear/aura-router-module | Aura.Router v2 | |
| データベース | ||
| ray/media-query | ||
| ray/aura-sql-module | Aura.Sql v2 | |
| ray/dbal-module | Doctrine DBAL | |
| ray/cake-database-module | CakePHP v3 database | |
| ray/doctrine-orm-module | Doctrine ORM | |
| ストレージ | ||
| bear/query-repository | 読み書きリポジトリの分離(デフォルト) | |
| bear/query-module | DBやWeb APIなどの外部アクセスの分離 | |
| Web | ||
| madapaja/twig-module | Twigテンプレートエンジン | |
| ray/web-form-module | Webフォーム & バリデーション | |
| ray/aura-web-module | Aura.Web | |
| ray/aura-session-module | Aura.Session | |
| ray/symfony-session-module | Symfony Session | |
| バリデーション | ||
| ray/validate-module | Aura.Filter | |
| satomif/extra-aura-filter-module | Aura.Filter | |
| 認証 | ||
| ray/oauth-module | OAuth | |
| kuma-guy/jwt-auth-module | JSON Web Token | |
| ray/role-module | Zend Acl Zend Acl | |
| bear/acl-resource | ACLベースのエンベドリソース | |
| ハイパーメディア | ||
| kuma-guy/siren-module | Siren | |
| 開発 | ||
| ray/test-double | テストダブル | |
| 非同期ハイパフォーマンス | ||
| MyVendor.Swoole | Swoole |
ベンダー・パッケージ
特定のパッケージやツールの組み合わせをモジュールだけのパッケージにして再利用し、同様のプロジェクトのモジュールを共通化することができます。1
Semver
すべてのパッケージはセマンティックバージョニングに従います。マイナーバージョンアップでは後方互換性が破壊されることはありません。
-
参考モジュール Koriym.DbAppPackage ↩




