パッケージ
アプリケーションは独立した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
Javeの 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 ↩