パッケージ

アプリケーションは独立した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/

logtmpフォルダは書き込み可能にします。var/wwwはWebドキュメントの公開エリアです。 confなど可変のファイルを設置します。

実行シーケンス

  1. コンソール入力(bin/app.phppage.php)またはWebサーバーのエントリーファイル(public/index.php)がbootstrap.phpを実行します。
  2. bootstrap.phpでは実行コンテキストに応じたルートオブジェクト$appを作成します。
  3. $appに含まれるルーターは外部のHTTPまたはCLIリクエストをアプリケーション内部のリソースリクエストに変換します。
  4. リソースリクエストが実行され、結果がクライアントに転送されます。

フレームワーク・パッケージ

フレームワークは以下のパッケージから構成されます。

ray/aop

Scrutinizer Quality Score codecov Type Coverage Continuous Integration

Javeの AOPアライアンス に準拠したAOPフレームワークです。

ray/di

Scrutinizer Quality Score codecov Type Coverage Continuous Integration

google/guice スタイルのDIフレームワークです。ray/aopを含みます。

bear/resource

Scrutinizer Code Quality codecov Type Coverage Continuous Integration

bear/sunday

Scrutinizer Code Quality codecov Type Coverage Continuous Integration

フレームワークのインターフェイスパッケージです。bear/resourceを含みます。

bear/package

Scrutinizer Code Quality codecov Type Coverage Continuous Integration

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

すべてのパッケージはセマンティックバージョニングに従います。マイナーバージョンアップでは後方互換性が破壊されることはありません。


  1. 参考モジュール Koriym.DbAppPackage