Ground Sunlight

Windowsで作る - Webプログラミングの開発環境(PHP)

ユーザ用ツール

サイト用ツール


apricot:usage:ja:config

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
apricot:usage:ja:config [2020/07/29 14:47]
tanaka [配置]
apricot:usage:ja:config [2020/08/13 08:25] (現在)
y2sunlight
ライン 1: ライン 1:
-> 編集中 
- 
----- 
- 
 ====== Apricot 配置と構成 ====== ====== Apricot 配置と構成 ======
  --- //​[[http://​www.y2sunlight.com|y2sunlight]] 2020-07-29//​  --- //​[[http://​www.y2sunlight.com|y2sunlight]] 2020-07-29//​
  
-[[apricot:​usage:​ja|Apricotの使用法 ​に戻る]]+[[apricot:​usage:​ja|Apricot ​ドキュメント ​に戻る]]
  
 目次 目次
  
 +  * [[apricot:​usage:​ja:​features|Apricot 特徴と概要]]
   * Apricot 配置と構成   * Apricot 配置と構成
 +  * [[apricot:​usage:​ja:​errors-logging|Apricot ログとエラー処理]]
   * [[apricot:​usage:​ja:​http|Apricot リクエストとレスポンス]]   * [[apricot:​usage:​ja:​http|Apricot リクエストとレスポンス]]
   * [[apricot:​usage:​ja:​frontend|Apricot フロントエンド]]   * [[apricot:​usage:​ja:​frontend|Apricot フロントエンド]]
ライン 16: ライン 14:
   * [[apricot:​usage:​ja:​middleware|Apricot ミドルウェア]]   * [[apricot:​usage:​ja:​middleware|Apricot ミドルウェア]]
   * [[apricot:​usage:​ja:​controller|Apricot コントローラ]]   * [[apricot:​usage:​ja:​controller|Apricot コントローラ]]
-  * [[apricot:​usage:​ja:​errors-logging|Apricot ログとエラー処理]] 
   * [[apricot:​usage:​ja:​utility|Apricot ユーティリティ]]   * [[apricot:​usage:​ja:​utility|Apricot ユーティリティ]]
  
 ---- ----
  
-===== 配置 ​=====+===== ディレクトリー構成 ​=====
  
-以下にプロジェクトフォルダの構成を示します。+以下にプロジェクトディレクトリーの構成を示します。
  
 {{fa>​folder-open-o}} ** /​your-project ** {{fa>​folder-open-o}} ** /​your-project **
 <​code>​ <​code>​
-your-project [プロジェクト]+your-project [プロジェクトディレクトリー]
  |  |
- ​├── app [アプリケーション] + ​├── app 
- |    | + ​├── assets 
- |    ├── Controllers [コントローラ] + ​├── config 
- |    ├── ​Exceptions ​[例外] + ​├── core 
- |    ├── Foundation [基盤] + ​├── public 
- ​| ​   ├── Helpers ​   [ヘ] + ​├── var 
- |    ├── ​Middleware ​[ミドルウェア] + ​└── vendor 
- |    └── Models ​    ​[モデ] +</​code>​ 
-  + 
- ├── ​assets ​[リソース] +=== appディレクトリー=== 
- |    | +アプリケーションの本体を配置するディレクトリーで以下サブディレクトリーがあります。 
- |    ├── lang  [言語別の出力テキスト] + 
- |    ├── ​sql   [SQLファイル] +  * ''​Foundation''​ --- コントローラ、モデル、エラーバッグなどのベースクラス 
- |    └── views [HTMLテンプ] +  * ''​Exceptions''​ --- アプリケーション例外クラスと集約例外コントローラ 
- |  +  * ''​Models''​ --- 通常データベースのテーブ単位で作り、アプリケションのデータモデル 
- ​├── config [設定ファイル] +  * ''​Controllers''​ --- 通常画面単位に作り、URLと結びついたアクション(メソッド)から 
- |    |  +  * ''​Middleware''​ --- アクション起動時の前処理(まはた後処理)を行うミドルウェア 
- ​| ​   ├── ​setting ​[機能別の一般設定] +  * ''​Helpers''​ --- ビューヘパーなどの共通のユーティリティクラス 
- |    └── setup   [機能起動設定]+ 
 +=== assetsディレクトリー === 
 +アプリケーションのリソースを配置し以下サブディレクトリーがあります。 
 + 
 +  ​* ''​views''​ --- 画面を作成するHTMLテンプレート(BladeOneで使用) 
 +  * ''​lang''​ --- トランスレーションの為の言語別のテキスト 
 +  * ''​sql''​ --- データベース構築の為のSQLファイル 
 + 
 +=== configディリー === 
 +アプリケーションの設定を配置し以下サブディレクトリーがあります。 
 + 
 +  * ''​setup''​ --- アプリケーション起動時のセットアップファイル 
 +  * ''​setting''​ --- 機能別の設定ファイル 
 + 
 +=== coreディレクトリー === 
 +Apricotのコアクラスを配置します。コアクラスはApricotフレームワークライブラリとして提供され、次の3つの主要な目的があります。 
 + 
 +  * アプリケーションの構成管理を提供します。 
 +  * ロギング、例外集約、デバックの機能を提供します。 
 +  * リクエストからレスポンスまでアプリケーションの標準的な処理方法を提供します。 
 + 
 +=== publicディレクトリー === 
 +公開用のディレクトリーです。ここにApricotのフロントコントローラ( ''​index.php''​ )があります。 
 + 
 +=== varディレクトリー === 
 +アプリケーションの次のデータを保存するディレクトリーで以下サブディレクトリーがあります。 
 + 
 +  * ''​logs''​ --- ログファイル 
 +  * ''​cache''​ --- キャッシュファイル 
 +  * ''​db''​ --- データベースファイルなど 
 + 
 +=== vendorディレクトリー === 
 +Composerが使用する外部ライブラリーの保存ディレクトリーです。 
 + 
 +\\ 
 + 
 +===== public ディレクトリー ===== 
 + 
 +''​public''​ ディレクトリーの下には以下に示すようなディレクトリーとファイルが存在します。 
 + 
 +<​code>​ 
 +your-project [プロジェクトディレクトリー]
  |  |
- ​├── core [Apricotのコア] 
- ​| ​   | 
- ​| ​   ├── Derivations [ライブラリの派生クラス] 
- ​| ​   ├── Exceptions ​ [例外] 
- ​| ​   ├── Foundation ​ [基盤] 
- ​| ​   └── helpers ​    ​[ヘルパー関数] 
- ​| ​ 
  ​├── public [公開フォルダ]  ​├── public [公開フォルダ]
  ​| ​   |  ​| ​   |
- ​| ​   ├── css/ + ​| ​   ├── css/        ​[cssファイル用] 
- ​| ​   ├── img/ + ​| ​   ├── img/        ​[画像ファイル用] 
- ​| ​   ├── js/ + ​| ​   ├── js/         ​[JavaScriptファイル
- ​| ​   ├── var/ + ​| ​   ├── ​var/        ​[ライブラリリソース用(実行時に配置)
- ​| ​   ├── .htaccess + ​| ​   ├── ​resources/  ​[ブラリリソース用(配布時に配置)] 
- ​| ​   └── index.php + ​| ​   ​── ​.htaccess ​  [Apacheの設定
- |  + ​| ​   └── ​index.php ​  [フロントコントローラ] 
- ​├── var  ​[データファイル] +</​code>​
- ​| ​   | +
- ​| ​   ├── ​cache [キャッシュ+
- ​| ​   ├── ​db    ​[DBファ(sqlite)] +
- ​| ​   ​── ​logs  ​[ログ+
- ​| ​ +
- └── ​vendor ​[外部イブラリ]+
  
 +Apricot自身のフロントエンドアセットは css, img と js ディレクトリーに配置し、外部ライブラリーのアセットは var または resources ディレクトリーに配置します。実行時にアセットを作成する場合は var に、配布ファイルとしてアセットを含める場合は、resources を使用します。
 +
 +\\
 +
 +==== .htcccess ====
 +
 +Apricotに含まれている ''​.htcccess''​ を以下に示します。このファイルの目的は、アプリケーションへの全てのリクエストをフロントコントローラ ''​index.php''​ で受け取るようにするためです。フロントコントローラはこのリクエストをリクエストルーターへ送り、適切なアクションで処理を行います。
 +
 +{{fa>​folder-open-o}} ** your-project/​public **
 +<code - .htaccess>​
 +<​IfModule mod_rewrite.c>​
 +    RewriteEngine On
 +    RewriteCond %{REQUEST_FILENAME} !-f
 +    RewriteCond %{REQUEST_FILENAME} !-d
 +    RewriteRule ^ index.php [L]
 +</​IfModule>​
 </​code>​ </​code>​
  
-=== appフォルダ=== +この設定では、ApacheのRewriteEngineを有効にして、publicフォルダ下に実在しないファイル及びフォルダに対する全てトをindex.phpに転送します。詳しくはApacheの[[https://​httpd.apache.org/​docs/​2.4/​ja/​mod/​mod_rewrite.html|マニュアル]]を参照して下さい
-アプリケーションの本体を保存するフォルダーで以下のクが存在します。+
  
-  * 【 基盤 】コントローラ、モデル、エラーバッグなどのベースクラス +\\
-  * 【 例外 】アプリケーション例外クラスと集約例外コントローラ +
-  * 【 モデル 】通常データベースのテーブル単位で作り、アプリケーションのデータモデルとなる +
-  * 【 コントローラ 】通常画面単位に作り、URLと結びついたアクション(メソッド)から構成されている +
-  * 【 ミドルウェア 】アクション起動時の前処理(まはた後処理)を行うクラス +
-  * 【 ヘルパー 】ビューヘルパーなどの共通のユーティリティクラス+
  
-=== assetsフォルダ ​==+===== アプリケーションの配置 =====
-アプリケーションのリソースを保存します。+
  
-  *【 ビューテプレート 】画面を作成するHTMLテプレト([[basic-library:​bladeone:​3.37|BladeOne]]で使用) +フロントトロラ ''​index.php''​ は、以下に示すように、起動後直ぐに公開ディレクリーとプロジェクディクトリーを取得してアプリケーションを初期化します。
-  *【 言語別のテキスト ランスレーションの為の言語別のテキスト +
-  *【 SQLファイル 】データベース構築の為のSQL+
  
-=== configフォルダ === +{{fa>​folder-open-o}} ** your-project/​public ** 
-アプリケーションの設定を保存します。+<code php index.php>​ 
 +<?php 
 +//​------------------------------------------------------------------- 
 +// Autoloader registration 
 +//​------------------------------------------------------------------- 
 +require dirname(__DIR__).'/​vendor/​autoload.php';​
  
-  *【 起動設定 】機能別のアプリケーション起動時の設定ファイル +//​------------------------------------------------------------------- 
-  *【 一般設定 】機能別の一般設定ファイル+// Sets the project and pulic path 
 +//​------------------------------------------------------------------- 
 +$project_path = dirname(__DIR__);​ 
 +$public_path = __DIR__;
  
-=== coreフォルダ === +//​------------------------------------------------------------------- 
-Apricotのコアクラスを保存します。コアの主な目的は次の3つです。+// Initializes the application 
 +//​------------------------------------------------------------------- 
 +$application ​new Apricot\Application($project_path,​ $public_path);​
  
-  * アプリケーションの構成管理を提供する +... 
-  * リクエストからレスポンスまでの標準的な処理方法を提供する +</​code>​
-  * ロギング、例外集約、デバックの機能を提供する+
  
-=== publicフォルダ === +ように、デフォルindex.php ​実装では、公開ディレクトリーとプジェクディレクの関係は以下のような親子関係を想定しています。
-公開用のフォルダです。ここはApricotコンラ( ''​index.php''​ )があります。+
  
-=== varフォルダ === +<​code>​ 
-プリションの次のデータを保存するフォルダです。+your-project [ロジェクトディレクトリー
 + | 
 + ​├── app 
 + ​├── assets 
 + ​├── config 
 + ​├── core 
 + ​├── var 
 + ​├── vendor 
 + | 
 + ​└── public [公開ィレクトリ
 +</​code>​
  
-  * グファイル +ジェクトィレクトリは公開ディレクトリからの相対パで設定することがきでるので、例えば、以下で示すように index.php を変更すれば任意の場所にプロジェクトディレクトリーを配置することができます。
-  * キャッシュファイル +
-  * データベースファイルなど+
  
-=== vendorフォルダ ​=== + 
-Composerが使用する外部ライブラリーの保存フォルダです。+=== 兄弟関係(siblings) === 
 + 
 +<​code>​ 
 + ​┌── your-project [プロジェクトディレクトリー] 
 + ​| ​    | 
 + ​| ​    ​├── app 
 + ​| ​    ​├── assets 
 + ​| ​    ​├── config 
 + ​| ​    ​├── core 
 + ​| ​    ​├── var 
 + ​| ​    ​└── ​vendor 
 + | 
 + ​├── public [公開ディレクトリー] 
 + | 
 +</​code>​ 
 + 
 +<code php index.php>​ 
 +$project_path = dirname(__DIR__).'/​your-project';​ 
 +$public_path = __DIR__; 
 +</​code>​ 
 + 
 +=== 祖父母孫関係(Grandparent-Grandchild) ​=== 
 + 
 +<​code>​ 
 +your-project [プロジェクトディレクトリー
 + | 
 + ​├── app 
 + ​├── assets 
 + ​├── config 
 + ​├── core 
 + ​├── var 
 + ​├── vendor 
 + | 
 + ​├── html 
 + ​| ​   | 
 + ​| ​   └── public [公開フォルダ
 +</​code>​ 
 + 
 +<code php index.php>​ 
 +$project_path = dirname(dirname(__DIR__));​ 
 +$public_path = __DIR__; 
 +</​code>​
  
 \\ \\
  
 ===== 環境設定 ===== ===== 環境設定 =====
 +
 +Apricotでは環境設定ライブラリーとして phpdotenv を使用しています。環境変数を設定する ''​.env''​ ファイルはプロジェクトフォルダ直下に配置します。環境変数の設定に関しての詳細は、[[https://​github.com/​vlucas/​phpdotenv|phpdotenv]] を参照して下さい。
  
 {{fa>​folder-open-o}} ** /​your-project ** {{fa>​folder-open-o}} ** /​your-project **
ライン 139: ライン 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|〇|
ライン 146: ライン 237:
 |LOG_NAME|ログ名 (省略時はAPP_NAMEと同じ)|string| | |LOG_NAME|ログ名 (省略時はAPP_NAMEと同じ)|string| |
 |LOG_LEVEL|[[https://​github.com/​Seldaek/​monolog/​blob/​master/​doc/​01-usage.md#​log-levels|ログレベル]] (省略時はdebug)|string| | |LOG_LEVEL|[[https://​github.com/​Seldaek/​monolog/​blob/​master/​doc/​01-usage.md#​log-levels|ログレベル]] (省略時はdebug)|string| |
 +
 +環境変数の取得にはボイラープレートの ''​env()''​ を使用します。
 +
 +<code php>
 +$app_name = env('​APP_NAME'​);​
 +</​code>​
 +
 \\ \\
  
 ===== アプリケーション設定 ===== ===== アプリケーション設定 =====
-app.php はライブラリミドルウェアに関する構成とセキティーの定まれています。+ 
 +アプリケーションの設定ファイルは、config ディレクトリの下に配置します。 
 + 
 +<​code>​ 
 +your-project [プロジェクトディレクトリー] 
 + | 
 + ​├── config 
 + ​| ​   | 
 + ​| ​   ├── setting/ ----- 機能別の設定ファイル(*.setting.php)を配置します 
 + ​| ​   ├── setup/ ------- 機能別のセットアップファイル(*.setup.php)を配置します 
 + ​| ​   ├── app.php ------ アプリケーション全体の設定を行います 
 + ​| ​   ├── routes.php --- ルーティングの設定を行います 
 +</​code>​ 
 + 
 +\\ 
 + 
 + 
 +==== app.php ファイル ===== 
 + 
 +app.php はアプリケーション全体の設定を行いますが、デフォルトでは以下のような設定が含まれています。 
 + 
 +{{fa>​folder-open-o}} ** /​your-project/​config** 
 +<code php app.php>​ 
 +<?php 
 +/** 
 + * This file contains application settings. 
 + */ 
 +return 
 +
 +    '​setup'​ => [ /* Some settings */ ], 
 +    '​middleware'​ => [ /* Some settings */ ], 
 +    '​csrf'​ => [ /* Some settings */ ], 
 +    '​auth'​ => [ /* Some settings */ ], 
 +]; 
 +</​code>​ 
 + 
 +  * ''​setup''​ --- 主に外部ライブラリの初期化ファイルを指定します。詳しくは [TODO] を参照して下さい。 
 +  * ''​middleware''​ --- ミドルウェアを指定します。詳しくは [TODO] を参照して下さい。 
 +  * ''​csrf''​ --- CSRFトークンの設定を行います。詳しくは [TODO] を参照して下さい。 
 +  * ''​auth''​ --- ユーザ認証(セッション認証)の設定を行います。詳しくは [TODO] を参照して下さい。 
 + 
 +\\ 
 + 
 +==== routes.php ファイル ==== 
 + 
 +Apricotではリクエストルータに [[https://​github.com/​nikic/​FastRoute|FastRoute]] を使用しています。ルーティングの設定は、 
 +routes.php ファイルで行います。以下はその例です: 
 + 
 +{{fa>​folder-open-o}} ** /​your-project/​config** 
 +<code php routes.php>​ 
 +<?php 
 +//​------------------------------------------------------------------- 
 +// Route Definition Callback 
 +//​------------------------------------------------------------------- 
 +return function (FastRoute\RouteCollector $r) 
 +
 +    $base = Core\Application::​getInstance()->​getRouteBase();​ 
 +    $r->​addGroup($base,​ function (FastRoute\RouteCollector $r) use($base) 
 +    { 
 +        // Home 
 +        $r->​get('/',​ function() use($base){ 
 +            header("​Location:​ " . $base.'/​stub'​);​ 
 +        }); 
 + 
 +        // Stub 
 +        $r->​get('/​stub[/​{no:​\d+}]',​ '​StubController@index'​);​ 
 +    }); 
 +}; 
 +</​code>​ 
 + 
 +ルーティングは、フロントコントローラ ''​index.php''​ が受け取ったURLパスとアクションを対応させます。上のHomeの例は、URLパス と クロージャを対応付けています。また、Stubの例では、URLパス と 「コントローラクラス@アクションメソッド」を対応付けています。 
 + 
 +ルーティング設定に関する詳細は、[[https://​github.com/​nikic/​FastRoute|FastRoute]]を参照して下さい。 
 + 
 +\\ 
 + 
 +==== 設定管理 ==== 
 + 
 +アプリケーション内の様々な設定は、ディレクトリー ''/​your-project/​config/​setting''​ 下に以下のネーミング規則で機能毎に保存されます。 
 + 
 +<​code>​ 
 +設定ファイル名:​ {first_key}.setting.php 
 +</​code>​ 
 + 
 +設定値へのアクスには **ドット表記** による「設定ー」によって行われます。設定キーの第1キーが設定ファイル名の{first_key}と一致します。この第1キーは習慣的にライブラリー名や機能によって名前付けされます。 
 + 
 +以下に ロギングライブラリである [[https://​github.com/​Seldaek/​monolog|monolog]] ​例を示します。 
 + 
 +{{fa>​folder-open-o}} ** /​apricot/​config/​setting ** 
 +<code php monolog.setting.php>​ 
 +<?php 
 +return 
 +
 +    '​name'​ => env('​LOG_NAME',​env('​APP_NAME'​)),​ 
 +    '​path'​ => env('​LOG_PATH',​var_dir('​logs'​)),​ 
 +    '​level'​=>​ env('​LOG_LEVEL','​debug'​),​ 
 +    '​max_files'​=>​ 0, 
 +]; 
 +</​code>​ 
 + 
 +settingファイルは key => valute の形式で設を表す連想配列を返す必要ありす。 
 + 
 +settingファイルの設定値を取得するには「ドット表記」によって行います。例えば「ログの名前」を参照する設定キーは、''​monolog.name''​ です。ドット表記による階層に制限はなく、monolog.setting.php で返す連想配列の階層が深けば ''​monolog.second_key.third_key.4th_key''​ などのように深い階層も可能です。 
 + 
 +設定の取得には Configシングルトンを使用します。 
 + 
 +<code php> 
 +/** Checks if the given key is present. */ 
 +$present = Config::​has('​monolog.name'​);​ 
 + 
 +/** Gets the configuration value specified by the Dot-notation key. */ 
 +$value = Config::​get('​monolog.name',​ $default);​ 
 +</​code>​ 
 + 
 +また、ボイラープレートを使って取得することも出来ます。 
 + 
 +<code php> 
 +$value = config('​monolog.name',​ $default);​ 
 +</​code>​ 
 + 
 +\\ 
 + 
 +==== セットアップ管理 ==== 
 + 
 +アプリケーションを構成しているライブラリーやクラスなどのセットアップファイルは、ディレクトリー ''/​your-project/​config/​setup''​ 下に以下のネーミング規則で保存されます。 
 + 
 +<​code>​ 
 +セットアップファイル名:​ {setup_name}.setup.php 
 +</​code>​ 
 + 
 +これらのセットアップファイルの構成は、アプリケーション設定ファイル app.php によって行われます。以下に実際の app.php によるセットアップの構成を示します。
  
 {{fa>​folder-open-o}} ** /​your-project/​config** {{fa>​folder-open-o}} ** /​your-project/​config**
ライン 166: ライン 394:
         config_dir('​setup/​validator.setup.php'​),​ /* Valitron\Validator */         config_dir('​setup/​validator.setup.php'​),​ /* Valitron\Validator */
     ],     ],
-    ​'​middleware'​ =>[ +    ​...
-        \App\Middleware\AccessLog::​class, ​       /* Access log */ +
-        \App\Middleware\VerifyCsrfToken::​class, ​ /* Verify CSRF Token */ +
-//      \App\Middleware\Auth\BasicAuth::​class, ​  /* Basic authentication */ +
-        \App\Middleware\Auth\SessionAuth::​class,​ /* Session authentication */ +
-    ], +
-    '​csrf'​ =>[ +
-        '​disposable'​ => false, +
-    ], +
-    '​auth'​ =>[ +
-        '​db'​=>​[ +
-            '​user'​=>​[ +
-                '​account'​ =>'​account',​ +
-                '​password'​ =>'​password',​ +
-                '​remember'​ =>'​remember_token',​ +
-            ], +
-        ], +
-        '​expires_sec'​=>​ 2*7*24*3600,​ /* 2weekws */ +
-        '​menu'​=>​ true, +
-    ],+
 ]; ];
 </​code>​ </​code>​
  
-  * setup --- ライブラリ初期化ファイルの所在(フルパス+Apricotアプリケーションインスタンスは、起動時にセットアップ構成で定義されて順序でに従ってsetupファイルを実行します。ここで使用されている ''​config_dir()''​ は configディレクトリ内からァイルパスを取得するボイラープレトです。
-  * middleware --- ミドルウェアの完全修飾クス名 +
-  * auth --- ユザ認証(セッション認証)の設定 +
-  * csrf --- CSRFトクンの設定 +
  
 \\ \\
  
-===== パッケージ設定 ===== 
->TODO 
  
-\\ 
- 
-===== ルーティング ===== 
->TODO 
- 
-\\ 
  
apricot/usage/ja/config.1596001670.txt.gz · 最終更新: 2020/07/29 14:47 by tanaka