パッケージ

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

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

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

構造

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

├── (bin)
├── bootstrap
│   ├── api.php
│   ├── bootstrap.php
│   └── web.php
├── composer.json
├── composer.lock
├── phpunit.xml.dist
├── public
│   └── index.php
├── src
│   ├── (Annotation)
│   ├── (Interceptor)
│   ├── Module
│   └── Resource
├── tests
│   ├── (Fake)
│   ├── bootstrap.php
│   └── tmp
├── var
│   ├── (conf)
│   ├── log
│   └── tmp
└── vendor

実行シークエンス

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

bootstrap/

BEARのリソースはコンソール入力とWebの双方からアクセスできます。 呼び出すスクリプトによってコンテキストが変わります。

php bootstrap/api.php options '/self/todo' # APIアクセス
php bootstrap/web.php get '/todo?id=1' # Webアクセス
php -S 127.0.0.1 bootstrap/api.php # PHPサーバー

コンテキストが変わるとアプリケーションの振る舞いが変わります。 ユーザーは独自のコンテキストを作成することができます。

bin/

スクリプトで実行可能なコマンドを設置します。

src/

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

publc/

Web公開フォルダ

var/

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

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

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

bear/sunday

Scrutinizer Code Quality Code Coverage Build Status

フレームワークのインターフェイスパッケージです。リファレンスの実装を含みます。

bear/package

Scrutinizer Code Quality Code Coverage Build Status

bear/sundayを実装したフレームワークの基本パッケージです。

bear/resource

Scrutinizer Code Quality Code Coverage Build Status

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

ray/di

Scrutinizer Quality Score Code Coverage Build Status

Google GuiceスタイルのDIフレームワークです。

ray/aop

Scrutinizer Quality Score Code Coverage Build Status

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

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 読み書きリポジトリの分離
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
ハイパーメディア    
  kuma-guy/siren-module Siren
開発    
  ray/test-double テストダブル

ベンダー・パッケージ

特定のパッケージやツールの組み合わせを1つのパッケージにして再利用することができます。 同じチームで複数のプロジェクトを行う場合のスケルトンになります。

Koriym.DbAppPackageはマイグレーションツールのPhinxやAuraPHPのコンポーネントなどをセットにして、設定ファイルや実行ファイルを添付したDBを使ったWeb APIアプリ用のパッケージです。 カスタムパッケージを作る時の参考に。