パッケージ

アプリケーションは独立したcomposerパッケージです。

フレームワークは依存としてcomposer installしますが、他のアプリケーションも依存パッケージとして使うことができます。

アプリケーション・パッケージ

構造

BEAR.Sundayアプリケーションのファイルレイアウトはphp-pds/skeletonに準拠しています。

├── bin
│   ├── app.php
│   └── page.php
├── env.php
├── autoload.php
├── bootstrap.php
├── composer.json
├── composer.lock
├── public
│   └── index.php
├── src
│   ├── (Annotation)
│   ├── (Interceptor)
│   ├── Module
│   └── Resource
├── tests
│   ├── (Fake)
├── var
│   ├── (conf)
│   ├── log
│   └── tmp
└── vendor

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/

アプリケーション固有のクラスファイルを設置します。

publc/

Web公開フォルダです。

var/

log,tmpフォルダは書き込み可能にします。var/wwwはWebドキュメントの公開エリアです。

実行シーケンス

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

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

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

ray/aop

Scrutinizer Quality Score Code Coverage Build Status

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

ray/di

Scrutinizer Quality Score Code Coverage Build Status

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

bear/resource

Scrutinizer Code Quality Code Coverage Build Status

PHPのオブジェクトをRESTサービスとして使用するRESTフレームワークです。ray/diを含みます。

bear/sunday

Scrutinizer Code Quality Code Coverage Build Status

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

bear/package

Scrutinizer Code Quality Code Coverage Build Status

bear/sundayを実装したWebフレームワークです。

bear/middleware

Scrutinizer Code Quality Code Coverage Build Status

PSR-7のミドルウエアのためのオプションパッケージです。

ライブラリ・パッケージ

必要なライブラリ・パッケージをcomposerインストールします。

Category Composer package Library
ルーター    
  bear/aura-router-module Aura.Router v2
データベース    
  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