このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 次のリビジョン 両方とも次のリビジョン | ||
apricot:usage:ja:config [2020/08/03 12:06] y2sunlight |
apricot:usage:ja:config [2020/08/13 08:25] y2sunlight |
||
---|---|---|---|
行 1: | 行 1: | ||
- | > 編集中 | ||
- | |||
- | ---- | ||
- | |||
====== Apricot 配置と構成 ====== | ====== Apricot 配置と構成 ====== | ||
--- // | --- // | ||
- | [[apricot: | + | [[apricot: |
目次 | 目次 | ||
+ | * [[apricot: | ||
* Apricot 配置と構成 | * Apricot 配置と構成 | ||
+ | * [[apricot: | ||
* [[apricot: | * [[apricot: | ||
* [[apricot: | * [[apricot: | ||
行 16: | 行 14: | ||
* [[apricot: | * [[apricot: | ||
* [[apricot: | * [[apricot: | ||
- | * [[apricot: | ||
* [[apricot: | * [[apricot: | ||
行 22: | 行 19: | ||
===== ディレクトリー構成 ===== | ===== ディレクトリー構成 ===== | ||
- | |||
- | ==== プロジェクトディレクトリー ==== | ||
以下にプロジェクトディレクトリーの構成を示します。 | 以下にプロジェクトディレクトリーの構成を示します。 | ||
行 38: | 行 33: | ||
| | ||
| | ||
- | |||
</ | </ | ||
- | === appフディレクトリー=== | + | === appディレクトリー=== |
- | アプリケーションの本体を保存するディレクトリーで以下のクラスが存在します。 | + | アプリケーションの本体を配置するディレクトリーで以下サブディレクトリーがあります。 |
- | * [ Foundation | + | * '' |
- | * [ Exceptions | + | * '' |
- | * [ Models | + | * '' |
- | * [ Controllers | + | * '' |
- | * [ Middleware | + | * '' |
- | * [ Helpers | + | * '' |
=== assetsディレクトリー === | === assetsディレクトリー === | ||
- | アプリケーションのリソースを配置します。 | + | アプリケーションのリソースを配置し以下サブディレクトリーがあります。 |
- | * [ views ] 画面を作成するHTMLテンプレート([[basic-library: | + | * '' |
- | * [ lang ] トランスレーションの為の言語別のテキスト | + | * '' |
- | * [ sql ] データベース構築の為のSQL | + | * '' |
=== configディレクトリー === | === configディレクトリー === | ||
- | アプリケーションの設定を配置します。 | + | アプリケーションの設定を配置し以下サブディレクトリーがあります。 |
- | * [ setup ] 機能別のアプリケーション起動時の設定ファイル | + | * '' |
- | * [ setting | + | * '' |
=== coreディレクトリー === | === coreディレクトリー === | ||
行 75: | 行 69: | ||
=== varディレクトリー === | === varディレクトリー === | ||
- | アプリケーションの次のデータを保存するディレクトリーです。 | + | アプリケーションの次のデータを保存するディレクトリーで以下サブディレクトリーがあります。 |
- | * [ logs ] ログファイル | + | * '' |
- | * [ cache ] キャッシュファイル | + | * '' |
- | * [ db ] データベースファイルなど | + | * '' |
=== vendorディレクトリー === | === vendorディレクトリー === | ||
行 88: | 行 82: | ||
===== public ディレクトリー ===== | ===== public ディレクトリー ===== | ||
+ | '' | ||
+ | |||
+ | < | ||
+ | your-project [プロジェクトディレクトリー] | ||
+ | | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Apricot自身のフロントエンドアセットは css, img と js ディレクトリーに配置し、外部ライブラリーのアセットは var または resources ディレクトリーに配置します。実行時にアセットを作成する場合は var に、配布ファイルとしてアセットを含める場合は、resources を使用します。 | ||
\\ | \\ | ||
- | ===== ディレクトリーの配置 ===== | + | ==== .htcccess |
+ | |||
+ | Apricotに含まれている '' | ||
+ | |||
+ | {{fa> | ||
+ | <code - .htaccess> | ||
+ | < | ||
+ | RewriteEngine On | ||
+ | RewriteCond %{REQUEST_FILENAME} !-f | ||
+ | RewriteCond %{REQUEST_FILENAME} !-d | ||
+ | RewriteRule ^ index.php [L] | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | この設定では、ApacheのRewriteEngineを有効にして、publicフォルダ下に実在しないファイル及びフォルダに対する全てのリクエストをindex.phpに転送します。詳しくはApacheの[[https:// | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== アプリケーションの配置 ===== | ||
+ | |||
+ | フロントコントローラ '' | ||
+ | |||
+ | {{fa> | ||
+ | <code php index.php> | ||
+ | <?php | ||
+ | // | ||
+ | // Autoloader registration | ||
+ | // | ||
+ | require dirname(__DIR__).'/ | ||
+ | |||
+ | // | ||
+ | // Sets the project and pulic path | ||
+ | // | ||
+ | $project_path = dirname(__DIR__); | ||
+ | $public_path = __DIR__; | ||
+ | |||
+ | // | ||
+ | // Initializes the application | ||
+ | // | ||
+ | $application = new Apricot\Application($project_path, | ||
+ | |||
+ | ... | ||
+ | </ | ||
+ | |||
+ | このように、デフォルトのindex.php の実装では、公開ディレクトリーとプロジェクトディレクトリーの関係は以下のような親子関係を想定しています。 | ||
+ | |||
+ | < | ||
+ | your-project [プロジェクトディレクトリー] | ||
+ | | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | プロジェクトディレクトリーは公開ディレクトリーからの相対パスで設定することがきでるので、例えば、以下で示すように index.php を変更すれば任意の場所にプロジェクトディレクトリーを配置することができます。 | ||
+ | |||
+ | |||
+ | === 兄弟関係(siblings) === | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | | ||
+ | | ||
+ | | | ||
+ | </ | ||
+ | |||
+ | <code php index.php> | ||
+ | $project_path = dirname(__DIR__).'/ | ||
+ | $public_path = __DIR__; | ||
+ | </ | ||
+ | |||
+ | === 祖父母孫関係(Grandparent-Grandchild) === | ||
+ | |||
+ | < | ||
+ | your-project [プロジェクトディレクトリー] | ||
+ | | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | <code php index.php> | ||
+ | $project_path | ||
+ | $public_path | ||
+ | </ | ||
\\ | \\ | ||
===== 環境設定 ===== | ===== 環境設定 ===== | ||
+ | |||
+ | Apricotでは環境設定ライブラリーとして phpdotenv を使用しています。環境変数を設定する '' | ||
{{fa> | {{fa> | ||
行 114: | 行 230: | ||
^環境変数^設定内容^型^必須^ | ^環境変数^設定内容^型^必須^ | ||
- | |APP_NAME|アプリケーション名(半角英数字)|string|〇| | + | |APP_NAME|アプリケーション名|string|〇| |
- | |APP_VERSION|バージョン|string|〇| | + | |APP_VERSION|アプリケーションバージョン|string|〇| |
|APP_SECRET|シークレット文字列\\ 安全の為にランダムな32文字を設定して下さい|string|〇| | |APP_SECRET|シークレット文字列\\ 安全の為にランダムな32文字を設定して下さい|string|〇| | ||
|APP_DEBUG|デバッグモード|bool|〇| | |APP_DEBUG|デバッグモード|bool|〇| | ||
行 121: | 行 237: | ||
|LOG_NAME|ログ名 (省略時はAPP_NAMEと同じ)|string| | | |LOG_NAME|ログ名 (省略時はAPP_NAMEと同じ)|string| | | ||
|LOG_LEVEL|[[https:// | |LOG_LEVEL|[[https:// | ||
+ | |||
+ | 環境変数の取得にはボイラープレートの '' | ||
+ | |||
+ | <code php> | ||
+ | $app_name = env(' | ||
+ | </ | ||
+ | |||
\\ | \\ | ||
===== アプリケーション設定 ===== | ===== アプリケーション設定 ===== | ||
- | app.php はライブラリとミドルウェアに関する構成とセキュリティーの定義が含まれています。 | + | |
+ | アプリケーションの設定ファイルは、config ディレクトリの下に配置します。 | ||
+ | |||
+ | < | ||
+ | your-project [プロジェクトディレクトリー] | ||
+ | | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | |||
+ | ==== app.php ファイル ===== | ||
+ | |||
+ | app.php はアプリケーション全体の設定を行いますが、デフォルトでは以下のような設定が含まれています。 | ||
+ | |||
+ | {{fa> | ||
+ | <code php app.php> | ||
+ | <?php | ||
+ | /** | ||
+ | * This file contains application settings. | ||
+ | */ | ||
+ | return | ||
+ | [ | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ]; | ||
+ | </ | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== routes.php ファイル ==== | ||
+ | |||
+ | Apricotではリクエストルータに [[https:// | ||
+ | routes.php ファイルで行います。以下はその例です: | ||
+ | |||
+ | {{fa> | ||
+ | <code php routes.php> | ||
+ | <?php | ||
+ | // | ||
+ | // Route Definition Callback | ||
+ | // | ||
+ | return function (FastRoute\RouteCollector $r) | ||
+ | { | ||
+ | $base = Core\Application:: | ||
+ | $r-> | ||
+ | { | ||
+ | // Home | ||
+ | $r-> | ||
+ | header(" | ||
+ | }); | ||
+ | |||
+ | // Stub | ||
+ | $r-> | ||
+ | }); | ||
+ | }; | ||
+ | </ | ||
+ | |||
+ | ルーティングは、フロントコントローラ '' | ||
+ | |||
+ | ルーティング設定に関する詳細は、[[https:// | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== 設定管理 ==== | ||
+ | |||
+ | アプリケーション内の様々な設定は、ディレクトリー ''/ | ||
+ | |||
+ | < | ||
+ | 設定ファイル名: | ||
+ | </ | ||
+ | |||
+ | 設定値へのアクセスには **ドット表記** による「設定キー」によって行われます。設定キーの第1キーが設定ファイル名の{first_key}と一致します。この第1キーは習慣的にライブラリー名や機能によって名前付けされます。 | ||
+ | |||
+ | 以下に ロギングライブラリである [[https:// | ||
+ | |||
+ | {{fa> | ||
+ | <code php monolog.setting.php> | ||
+ | <?php | ||
+ | return | ||
+ | [ | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ]; | ||
+ | </ | ||
+ | |||
+ | settingファイルは key => valute の形式で設定を表す連想配列を返す必要があります。 | ||
+ | |||
+ | settingファイルの設定値を取得するには「ドット表記」によって行います。例えば「ログの名前」を参照する設定キーは、'' | ||
+ | |||
+ | 設定の取得には Configシングルトンを使用します。 | ||
+ | |||
+ | <code php> | ||
+ | /** Checks if the given key is present. */ | ||
+ | $present = Config:: | ||
+ | |||
+ | /** Gets the configuration value specified by the Dot-notation key. */ | ||
+ | $value = Config:: | ||
+ | </ | ||
+ | |||
+ | また、ボイラープレートを使って取得することも出来ます。 | ||
+ | |||
+ | <code php> | ||
+ | $value = config(' | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== セットアップ管理 ==== | ||
+ | |||
+ | アプリケーションを構成しているライブラリーやクラスなどのセットアップファイルは、ディレクトリー ''/ | ||
+ | |||
+ | < | ||
+ | セットアップファイル名: | ||
+ | </ | ||
+ | |||
+ | これらのセットアップファイルの構成は、アプリケーション設定ファイル app.php によって行われます。以下に実際の app.php によるセットアップの構成を示します。 | ||
{{fa> | {{fa> | ||
行 141: | 行 394: | ||
config_dir(' | config_dir(' | ||
], | ], | ||
- | | + | |
- | \App\Middleware\AccessLog:: | + | |
- | \App\Middleware\VerifyCsrfToken:: | + | |
- | // \App\Middleware\Auth\BasicAuth:: | + | |
- | \App\Middleware\Auth\SessionAuth:: | + | |
- | ], | + | |
- | ' | + | |
- | ' | + | |
- | ], | + | |
- | ' | + | |
- | ' | + | |
- | ' | + | |
- | ' | + | |
- | ' | + | |
- | ' | + | |
- | ], | + | |
- | ], | + | |
- | ' | + | |
- | ' | + | |
- | ], | + | |
]; | ]; | ||
</ | </ | ||
- | * setup --- ライブラリの初期化ファイルの所在(フルパス) | + | Apricotのアプリケーションインスタンスは、起動時にセットアップ構成で定義されて順序でに従ってsetupファイルを実行します。ここで使用されている '' |
- | * middleware --- ミドルウェアの完全修飾クラス名 | + | |
- | * auth --- ユーザ認証(セッション認証)の設定 | + | |
- | * csrf --- CSRFトークンの設定 | + | |
\\ | \\ | ||
- | ===== パッケージ設定 ===== | ||
- | >TODO | ||
- | \\ | ||
- | |||
- | ===== ルーティング ===== | ||
- | >TODO | ||
- | |||
- | \\ | ||