PHPのフレームワークです。オートローディング、ルーティング、ORマッパ、フォームバリデータ、その他ユーティリティがセットになっています。
修订版 | 162 (tree) |
---|---|
时间 | 2022-03-25 13:31:15 |
作者 | tantancode |
settings のキーを統廃合
@@ -124,7 +124,7 @@ | ||
124 | 124 | fulluser=$(sed -r "s/([^']+)@([^']+)/'\1'@'\2'/" <<< "$fulluser") |
125 | 125 | |
126 | 126 | # 本番環境では行わない。 |
127 | - envtype=$(php -r 'echo (include "resources/environment.php")["environment"]["environment_type"];') | |
127 | + envtype=$(php -r 'echo (include "resources/environment.php")["application"]["environment_type"];') | |
128 | 128 | if test "$envtype" != "prod"; then |
129 | 129 | |
130 | 130 | # DBが既存の場合は... |
@@ -78,19 +78,6 @@ | ||
78 | 78 | |
79 | 79 | //----------------------------------------------------------------------------------------------------- |
80 | 80 | /** |
81 | - * 引数に指定された名前の環境変数の値を返す。 | |
82 | - * Mojo::setting() の第一引数を "environment" で固定したショートハンド。 | |
83 | - * | |
84 | - * param 環境変数の名前。settings.php の 'environment' 以下のサブキー。 | |
85 | - * return 該当の値。見付からない場合は null だが E_NOTICE が発生する。 | |
86 | - */ | |
87 | - public static function getEnvironment($name) { | |
88 | - | |
89 | - return static::setting('environment', $name); | |
90 | - } | |
91 | - | |
92 | - //----------------------------------------------------------------------------------------------------- | |
93 | - /** | |
94 | 81 | * アプリのルートURLを返す。 |
95 | 82 | * |
96 | 83 | * param フロントコントローラーの名前。省略時は現在のコントローラー名が使われる。 |
@@ -224,7 +211,7 @@ | ||
224 | 211 | $log = AppLog::exception($e); |
225 | 212 | |
226 | 213 | // 本番環境なら簡易なメッセージとエラーログを引くためのコードを表示する。 |
227 | - if(static::getEnvironment('environment_type') == 'prod') { | |
214 | + if(static::setting('application', 'environment_type') == 'prod') { | |
228 | 215 | |
229 | 216 | echo "申しわけありません。エラーが発生しました。\n" |
230 | 217 | . "お問い合わせコード: {$log['code']}\n"; |
@@ -30,7 +30,7 @@ | ||
30 | 30 | |
31 | 31 | // ドメインがなかったら補う。 |
32 | 32 | if( !@$match[2] ) |
33 | - $match[2] = @$servs[2] ?: ('//' . AppMojo::getEnvironment('http_host')); | |
33 | + $match[2] = @$servs[2] ?: ('//' . AppMojo::setting('application', 'http_host')); | |
34 | 34 | |
35 | 35 | // パスが "/" で始まってなかったら補う。 |
36 | 36 | if( @$match[3][0] != '/' ) |
@@ -141,7 +141,7 @@ | ||
141 | 141 | if(!$path) return $path; |
142 | 142 | |
143 | 143 | // 静的ファイルホスティング設定も加味して絶対URLにする。 |
144 | - return AppMojo::getEnvironment('asset_host') . '/' . $path . self::versionStamp($path); | |
144 | + return AppMojo::setting('application', 'asset_host') . '/' . $path . self::versionStamp($path); | |
145 | 145 | } |
146 | 146 | |
147 | 147 | /** |
@@ -40,7 +40,7 @@ | ||
40 | 40 | $userId = Mojo::setting('process', 'mojo.session')::getSession()['user_id']; |
41 | 41 | |
42 | 42 | // file.target='all' は本番では無効。 |
43 | - if($this->params['file.target'] == 'all' && AppMojo::getEnvironment('environment_type') == 'prod') | |
43 | + if($this->params['file.target'] == 'all' && AppMojo::setting('application', 'environment_type') == 'prod') | |
44 | 44 | $this->params['file.target'] == 'none'; |
45 | 45 | |
46 | 46 | // file.target='none' なら何もしない。 |
@@ -35,7 +35,7 @@ | ||
35 | 35 | header('Cache-Control: no-cache'); |
36 | 36 | |
37 | 37 | // 本番環境ではJSONエンコードのオプションを調整する。 |
38 | - if(AppMojo::getEnvironment('environment_type') == 'prod' && $action->renderer instanceof JsonRenderer) | |
38 | + if(AppMojo::setting('application', 'environment_type') == 'prod' && $action->renderer instanceof JsonRenderer) | |
39 | 39 | $action->renderer->encodeOptions &= ~JSON_PRETTY_PRINT; |
40 | 40 | |
41 | 41 | // メンテナンス時、他アクションへ飛ばすのではなくここで処理するようにする。 |
@@ -91,7 +91,7 @@ | ||
91 | 91 | } |
92 | 92 | |
93 | 93 | // 本番環境以外ではエラートレースもセットする。 |
94 | - if(AppMojo::getEnvironment('environment_type') != 'prod') | |
94 | + if(AppMojo::setting('application', 'environment_type') != 'prod') | |
95 | 95 | $response['error_trace'] = Log::stringifyException($e); |
96 | 96 | |
97 | 97 | // 出力。 |
@@ -38,7 +38,7 @@ | ||
38 | 38 | protected function preExecute($action) { |
39 | 39 | |
40 | 40 | // environmentsで指定された環境以外では認証しない。 |
41 | - if( $this->params['environments'] && !in_array(AppMojo::getEnvironment('environment_type'), (array)$this->params['environments']) ) | |
41 | + if( $this->params['environments'] && !in_array(AppMojo::setting('application', 'environment_type'), (array)$this->params['environments']) ) | |
42 | 42 | return; |
43 | 43 | |
44 | 44 | // パラメータ redirect が設定されている場合は... |
@@ -1,7 +1,7 @@ | ||
1 | 1 | <?php |
2 | 2 | |
3 | 3 | /** |
4 | - * settings.php で environment - maintenance_mode が true にされていたら処理を中断するフィルタ。 | |
4 | + * settings.php で application - maintenance_mode が true にされていたら処理を中断するフィルタ。 | |
5 | 5 | * メンテナンスページの表示はフィルタパラメータで指定されたアクションを用いるが、フィルタパラメータが関数としてコール可能なら、代わりにコールされる。 |
6 | 6 | */ |
7 | 7 | class MaintenanceShutterFilter extends OnceFilter { |
@@ -13,7 +13,7 @@ | ||
13 | 13 | protected function preExecuteOnce($action) { |
14 | 14 | |
15 | 15 | // メンテナンスモード中なら... |
16 | - if( @Mojo::getEnvironment('maintenance_mode') ) { | |
16 | + if( @Mojo::setting('application', 'maintenance_mode') ) { | |
17 | 17 | |
18 | 18 | // フィルタパラメータが関数としてコール可能ならコール、不可ならソーリーページへリダイレクトする。 |
19 | 19 | if( is_callable($this->params[0]) ) |
@@ -76,7 +76,7 @@ | ||
76 | 76 | |
77 | 77 | // メールヘッダを作成。 |
78 | 78 | $headers = array( |
79 | - "From: " . AppMojo::setting('application', 'from_address'), | |
79 | + "From: " . AppMojo::setting('smtp', 'fromaddr'), | |
80 | 80 | "To: " . $to, |
81 | 81 | "Subject: " . sprintf('=?UTF-8?B?%s?=', base64_encode($title)), |
82 | 82 | "MIME-Version: 1.0", |
@@ -190,10 +190,10 @@ | ||
190 | 190 | $log = ''; |
191 | 191 | |
192 | 192 | // SMTP情報を取得。 |
193 | - $server = AppMojo::setting('environment', 'smtp_server'); | |
194 | - $userid = AppMojo::setting('environment', 'smtp_userid'); | |
195 | - $password = AppMojo::setting('environment', 'smtp_password'); | |
196 | - $from = AppMojo::setting('application', 'from_address'); | |
193 | + $server = AppMojo::setting('smtp', 'server'); | |
194 | + $userid = AppMojo::setting('smtp', 'userid'); | |
195 | + $password = AppMojo::setting('smtp', 'password'); | |
196 | + $from = AppMojo::setting('smtp', 'fromaddr'); | |
197 | 197 | |
198 | 198 | // SMTPサーバが "file" とされているならメールデータをファイルとして出力する。 |
199 | 199 | if($server == 'file') { |
@@ -45,10 +45,10 @@ | ||
45 | 45 | // https://www.twilio.com/docs/sms/api/message-resource#create-a-message-resource |
46 | 46 | |
47 | 47 | // SMS送信に必要な情報を取得。 |
48 | - $account = AppMojo::setting('environment', 'sms_account'); | |
49 | - $id = AppMojo::setting('environment', 'sms_id'); | |
50 | - $secret = AppMojo::setting('environment', 'sms_secret'); | |
51 | - $from = AppMojo::setting('application', 'sms_fromno'); | |
48 | + $account = AppMojo::setting('sms', 'account'); | |
49 | + $sid = AppMojo::setting('sms', 'sid') ?: $account; | |
50 | + $secret = AppMojo::setting('sms', 'secret'); | |
51 | + $from = AppMojo::setting('sms', 'fromno'); | |
52 | 52 | |
53 | 53 | // Twilioアカウントが "file" とされているなら送信文をファイルとして出力する。 |
54 | 54 | if($account == 'file') |
@@ -56,9 +56,9 @@ | ||
56 | 56 | |
57 | 57 | // APIのURLを取得。 |
58 | 58 | $account = urlencode($account); |
59 | - $id = urlencode($id); | |
59 | + $sid = urlencode($sid); | |
60 | 60 | $secret = urlencode($secret); |
61 | - $endpoint = "https://{$id}:{$secret}@api.twilio.com/2010-04-01/Accounts/{$account}/Messages.json"; | |
61 | + $endpoint = "https://{$sid}:{$secret}@api.twilio.com/2010-04-01/Accounts/{$account}/Messages.json"; | |
62 | 62 | |
63 | 63 | // 送信。 |
64 | 64 | try { |
@@ -136,7 +136,7 @@ | ||
136 | 136 | public static function isHearTarget($userId) { |
137 | 137 | |
138 | 138 | // 本番でないなら全部ログしてみよう。 |
139 | - if(AppMojo::getEnvironment('environment_type') != 'prod') | |
139 | + if(AppMojo::setting('application', 'environment_type') != 'prod') | |
140 | 140 | return true; |
141 | 141 | |
142 | 142 | // POSTリクエストはすべてログする。 |
@@ -265,7 +265,7 @@ | ||
265 | 265 | $time = Profiler::finish('sql'); |
266 | 266 | |
267 | 267 | // デバッグ処理が必要か判定して、必要なら変数 $format にその形式を取得する。 |
268 | - $mode = defined('SQL_DEBUG') ? constant('SQL_DEBUG') : Mojo::setting('environment', 'sql_debug'); | |
268 | + $mode = defined('SQL_DEBUG') ? constant('SQL_DEBUG') : Mojo::setting('application', 'sql_debug'); | |
269 | 269 | if($mode) { |
270 | 270 | |
271 | 271 | // true で指定されているのは "all.html" と解釈する。 |
@@ -1,10 +1,13 @@ | ||
1 | 1 | <?php |
2 | 2 | |
3 | -// ディレクトリ&クラス設定をロード。 | |
4 | -$settings = include(__DIR__ . '/resources/settings.php'); | |
3 | +(function(){ | |
5 | 4 | |
6 | -// Mojoクラスをロード。 | |
7 | -require_once(APP_DIR . '/' . $settings['directories']['mojo.mojo'] . '/Mojo.php'); | |
5 | + // ディレクトリ&クラス設定をロード。 | |
6 | + $settings = include(__DIR__ . '/resources/settings.php'); | |
8 | 7 | |
9 | -// 起動。 | |
10 | -Mojo::launch($settings); | |
8 | + // Mojoクラスをロード。 | |
9 | + require_once(APP_DIR . '/' . $settings['directories']['mojo.mojo'] . '/Mojo.php'); | |
10 | + | |
11 | + // 起動。 | |
12 | + Mojo::launch($settings); | |
13 | +})(); |
@@ -6,34 +6,22 @@ | ||
6 | 6 | return array( |
7 | 7 | |
8 | 8 | // 環境の設定。 |
9 | - 'environment' => array( | |
10 | - 'environment_type' => 'dev', // "dev":開発環境 "stage":ステージング環境 "prod":本番 のいずれか。 | |
11 | - 'sql_debug' => '', // SQLデバッグモード。以下のいずれか。定数 SQL_DEBUG で定義することも出来る。その場合はそちらのほうが優先。 | |
12 | - // all.html 全て出力。HTMLフォーマット。 | |
13 | - // write.html 更新系のみ出力。HTMLフォーマット。 | |
14 | - // all.text 全て出力。textフォーマット。 | |
15 | - // write.text 更新系のみ出力。textフォーマット。 | |
16 | - // all.log 全てログ。textフォーマット。 | |
17 | - // write.log 更新系のみログ。textフォーマット。 | |
18 | - 'maintenance_mode' => false, // 管理機能以外のアクセスを遮断したい場合はtrueにする。 | |
9 | + 'application' => array( | |
10 | + 'environment_type' => 'dev', // "dev":開発環境 "stage":ステージング環境 "prod":本番 のいずれか。 | |
11 | + 'sql_debug' => '', // SQLデバッグモード。以下のいずれか。定数 SQL_DEBUG で定義することも出来る。その場合はそちらのほうが優先。 | |
12 | + // all.html 全て出力。HTMLフォーマット。 | |
13 | + // write.html 更新系のみ出力。HTMLフォーマット。 | |
14 | + // all.text 全て出力。textフォーマット。 | |
15 | + // write.text 更新系のみ出力。textフォーマット。 | |
16 | + // all.log 全てログ。textフォーマット。 | |
17 | + // write.log 更新系のみログ。textフォーマット。 | |
18 | + 'maintenance_mode' => false, // 管理機能以外のアクセスを遮断したい場合はtrueにする。 | |
19 | 19 | |
20 | 20 | // ホスト情報。 |
21 | - 'http_host' => 'localhost', // このサーバのHTTPドメイン。デフォルトでないならポートも含む。例) example.com:8080 | |
21 | + 'http_host' => 'localhost', // このサーバのHTTPドメイン。ポートも含む。例) example.com:8080 | |
22 | 22 | # 'http_host' => @$_SERVER['HTTP_HOST'] ?? basename(APP_DIR), // ディレクトリ名から取得するならこれ。 |
23 | - 'asset_host' => '', // 静的ファイルのホスティングURL。"//example.com/dir1" のように指定する。末尾に "/" は付けないようにする。 | |
24 | - // 自ホストを使う場合は空文字。サービスが https に対応しているなら、このドメインも対応している必要がある。 | |
25 | - | |
26 | - // メール関連。 | |
27 | - # 'smtp_server' => 'tcp://example.com:587', // SMTPサーバー | |
28 | - # 'smtp_server' => 'tls://example.com:465', // SMTPサーバー(SSLの場合) | |
29 | - 'smtp_server' => 'file', // ログファイルに出力する場合 | |
30 | - 'smtp_userid' => 'your_username', // SMTPユーザ名 | |
31 | - 'smtp_password' => 'your_password', // SMTPパスワード | |
32 | - | |
33 | - // SMS関連。 | |
34 | - 'sms_account' => 'twilio_account_sid', // TwilioアカウントSID。"file" とした場合はログディレクトリに出力する。 | |
35 | - 'sms_id' => 'twilio_account_sid_or_api_key_sid', // TwilioアカウントSID。API Credentials を使う場合はそのSID | |
36 | - 'sms_secret' => 'twilio_auth_token_or_api_key_secret', // Twilio Auth Token。 API Credentials を使う場合はそのシークレット | |
23 | + 'asset_host' => '', // 静的ファイルのホスティングURL。"//example.com/dir1" のように指定する。末尾に "/" は付けないようにする。 | |
24 | + // 自ホストを使う場合は空文字。サービスが https に対応しているなら、このドメインも対応している必要がある。 | |
37 | 25 | ), |
38 | 26 | |
39 | 27 | // データベース定義。キーをデータベース識別名とし、値にその接続情報を格納する。 |
@@ -1,6 +1,6 @@ | ||
1 | 1 | <?php |
2 | 2 | /** |
3 | - * アプリケーションの設定を返すファイル。 | |
3 | + * アプリケーションの設定を定義するファイル。 | |
4 | 4 | */ |
5 | 5 | |
6 | 6 | // プロジェクトディレクトリの物理パス。 |
@@ -10,115 +10,133 @@ | ||
10 | 10 | // "/this/is/example" のように記述する。ルートディレクトリの場合は空文字とする。 |
11 | 11 | define('APP_WEB', ''); |
12 | 12 | |
13 | -// ここで記述した連想配列を返す。ここで設定した値は Mojo::setting() で取得することが出来る。 | |
13 | +// アプリの設定。ここで設定した値は Mojo::setting() で取得することが出来る。 | |
14 | 14 | // "mojo." の接頭辞が付いているキーはMojoの内部で必要になるが、その他に追加したい値があれば好きに追加することが出来る。 |
15 | -return array_replace_recursive( | |
15 | +// environment.php で記述された値で上書きマージされるので、環境によって変わる値はそちらに記述。 | |
16 | +$settings = array( | |
16 | 17 | |
17 | - array( | |
18 | + // ディレクトリの物理パス。相対パスは APP_DIR が基準となる。 | |
19 | + 'directories' => array( | |
20 | + 'mojo.mojo' => 'mojo', // Mojoのクラスファイルがあるディレクトリ。 | |
21 | + 'mojo.resources' => 'resources', // リソース類を格納するディレクトリ。 | |
22 | + 'mojo.libs' => 'lib', // "libs" ディレクトリ。サブディレクトリを含め、このディレクトリより下のファイルはオートロードの対象になる。 | |
23 | + 'mojo.sites' => 'sites', // サイト・アクションファイルを格納しているディレクトリ。 | |
24 | + 'mojo.var' => 'var', // サーバ処理で生成されるファイルの格納ディレクトリ。 | |
25 | + 'smarty.cache' => 'var/smarty.cache', | |
26 | + 'smarty.compile' => 'var/smarty.compile', | |
27 | + 'htdocs' => 'htdocs', // HTTPドキュメントを格納しているディレクトリ。 | |
28 | + 'logs.root' => 'var/logs', // ログを格納するルートディレクトリ。 | |
29 | + 'logs.current' => 'var/logs/'.date('Ym'), // 現在日時におけるログ格納ディレクトリ。 | |
30 | + // AppMojo::setting() の働きで、コマンドラインで実行している場合は末尾にユーザ名が付く。 | |
31 | + ), | |
18 | 32 | |
19 | - // ディレクトリの物理パス。相対パスは APP_DIR が基準となる。 | |
20 | - 'directories' => array( | |
21 | - 'mojo.mojo' => 'mojo', // Mojoのクラスファイルがあるディレクトリ。 | |
22 | - 'mojo.resources' => 'resources', // リソース類を格納するディレクトリ。 | |
23 | - 'mojo.libs' => 'lib', // "libs" ディレクトリ。サブディレクトリを含め、このディレクトリより下のファイルはオートロードの対象になる。 | |
24 | - 'mojo.sites' => 'sites', // サイト・アクションファイルを格納しているディレクトリ。 | |
25 | - 'mojo.var' => 'var', // サーバ処理で生成されるファイルの格納ディレクトリ。 | |
26 | - 'smarty.cache' => 'var/smarty.cache', | |
27 | - 'smarty.compile' => 'var/smarty.compile', | |
28 | - 'htdocs' => 'htdocs', // HTTPドキュメントを格納しているディレクトリ。 | |
29 | - 'logs.root' => 'var/logs', // ログを格納するルートディレクトリ。 | |
30 | - 'logs.current' => 'var/logs/'.date('Ym'), // 現在日時におけるログ格納ディレクトリ。 | |
31 | - // AppMojo::setting() の働きで、コマンドラインで実行している場合は末尾にユーザ名が付く。 | |
32 | - ), | |
33 | + // ルーティングに関する設定。 | |
34 | + 'routing' => array( | |
35 | + 'mojo.default_site' => 'public', // URLでサイトが省略された場合のデフォルト。 | |
36 | + 'mojo.default_site.cli' => 'command', // コマンドラインで実行された場合のデフォルトサイト。 | |
37 | + 'mojo.default_action' => 'index', // URLでアクションが省略された場合のデフォルト。 | |
38 | + 'mojo.default_front' => 'index.php', // 省略可能なフロントコントローラー。URL生成時に参照される。 | |
39 | + 'mojo.notfound_action' => 'notfound', // 該当のアクションが見つからない場合のアクション。 | |
40 | + 'mojo.error_action' => 'sorry.error', // エラーが発生した場合のエラー表示アクション。AppMojo クラスで処理されている。 | |
33 | 41 | |
34 | - // ルーティングに関する設定。 | |
35 | - 'routing' => array( | |
36 | - 'mojo.default_site' => 'public', // URLでサイトが省略された場合のデフォルト。 | |
37 | - 'mojo.default_site.cli' => 'command', // コマンドラインで実行された場合のデフォルトサイト。 | |
38 | - 'mojo.default_action' => 'index', // URLでアクションが省略された場合のデフォルト。 | |
39 | - 'mojo.default_front' => 'index.php', // 省略可能なフロントコントローラー。URL生成時に参照される。 | |
40 | - 'mojo.notfound_action' => 'notfound', // 該当のアクションが見つからない場合のアクション。 | |
41 | - 'mojo.error_action' => 'sorry.error', // エラーが発生した場合のエラー表示アクション。AppMojo クラスで処理されている。 | |
42 | + // ここの設定で、リクエストされているパスを先頭一致で検査するURLリライトのような挙動を設定できる。 | |
43 | + // | |
44 | + // 例) | |
45 | + // // "gadget.php" を "index.php/public/gadget" として処理したい場合 | |
46 | + // 'gadget.php' => 'index.php/public/gadget' | |
47 | + // | |
48 | + // // "xxxxx.php/gadget" を "xxxxx.php/task/gadget" と解釈したい場合 | |
49 | + // '*/gadget' => '*/task/gadget' | |
50 | + // | |
51 | + // 説明) | |
52 | + // "*" はキーにおいてはワイルドカード、値においては「その部分を置き換えない」という意味になる。 | |
53 | + // "/" で区切られた区画ごとに処理する。 | |
54 | + // "foo/bar/index.php/..." のように、サブディレクトリにフロントコントローラーが置かれている場合でも | |
55 | + // フロントコントローラー以降のパスのみが検査対象となる。 | |
56 | + // キーの定義順に検査され、一度マッチしたら以降のキーは検査されない。 | |
57 | + ), | |
42 | 58 | |
43 | - // ここの設定で、リクエストされているパスを先頭一致で検査するURLリライトのような挙動を設定できる。 | |
44 | - // | |
45 | - // 例) | |
46 | - // // "gadget.php" を "index.php/public/gadget" として処理したい場合 | |
47 | - // 'gadget.php' => 'index.php/public/gadget' | |
48 | - // | |
49 | - // // "xxxxx.php/gadget" を "xxxxx.php/task/gadget" と解釈したい場合 | |
50 | - // '*/gadget' => '*/task/gadget' | |
51 | - // | |
52 | - // 説明) | |
53 | - // "*" はキーにおいてはワイルドカード、値においては「その部分を置き換えない」という意味になる。 | |
54 | - // "/" で区切られた区画ごとに処理する。 | |
55 | - // "foo/bar/index.php/..." のように、サブディレクトリにフロントコントローラーが置かれている場合でも | |
56 | - // フロントコントローラー以降のパスのみが検査対象となる。 | |
57 | - // キーの定義順に検査され、一度マッチしたら以降のキーは検査されない。 | |
58 | - ), | |
59 | + // クラスオートローディングの設定。クラス名をキー、そのクラスが定義されているファイルの APP_DIR からの相対パスを値とする。 | |
60 | + // ここに設定していなくても以下の条件をすべて満たしていればオートロードされる。 | |
61 | + // ・ファイルが libs 以下にあること。(サブディレクトリも含む) | |
62 | + // ・"[クラス名].php" というファイル名であること。たとえば、Foo クラスであれば Foo.php であること。 | |
63 | + 'autoload' => array( | |
64 | + ), | |
59 | 65 | |
60 | - // クラスオートローディングの設定。クラス名をキー、そのクラスが定義されているファイルの APP_DIR からの相対パスを値とする。 | |
61 | - // ここに設定していなくても以下の条件をすべて満たしていればオートロードされる。 | |
62 | - // ・ファイルが libs 以下にあること。(サブディレクトリも含む) | |
63 | - // ・"[クラス名].php" というファイル名であること。たとえば、Foo クラスであれば Foo.php であること。 | |
64 | - 'autoload' => array( | |
65 | - ), | |
66 | + // 標準処理についての設定。 | |
67 | + 'process' => array( | |
66 | 68 | |
67 | - // 標準処理についての設定。 | |
68 | - 'process' => array( | |
69 | + 'mojo.file_group' => 'nginx', // ログファイル等を作成するときのオーナーグループ。 | |
69 | 70 | |
70 | - 'mojo.file_group' => 'nginx', // ログファイル等を作成するときのオーナーグループ。 | |
71 | + // 処理担当クラスの名前。Mojoの処理をオーバーライドしたいときはここのクラス名を変更することが出来る。 | |
72 | + 'mojo.engine' => 'AppMojo', // Mojo クラスを通じて呼び出される処理の実装を担当しているクラス。 | |
73 | + 'mojo.renderer' => 'SmartyRenderer', // デフォルトで使用されるレンダラ。 | |
74 | + 'mojo.session' => 'PhpSession', // セッションの管理に使用するクラス。 | |
75 | + 'form.top' => 'MojoForm', // MojoForm 群における管制クラス | |
76 | + 'form.container' => 'FormContainer', // 同じくコンテナクラス | |
77 | + 'form.item' => 'FormItem', // 同じく個別項目クラス | |
71 | 78 | |
72 | - // 処理担当クラスの名前。Mojoの処理をオーバーライドしたいときはここのクラス名を変更することが出来る。 | |
73 | - 'mojo.engine' => 'AppMojo', // Mojo クラスを通じて呼び出される処理の実装を担当しているクラス。 | |
74 | - 'mojo.renderer' => 'SmartyRenderer', // デフォルトで使用されるレンダラ。 | |
75 | - 'mojo.session' => 'PhpSession', // セッションの管理に使用するクラス。 | |
76 | - 'form.top' => 'MojoForm', // MojoForm 群における管制クラス | |
77 | - 'form.container' => 'FormContainer', // 同じくコンテナクラス | |
78 | - 'form.item' => 'FormItem', // 同じく個別項目クラス | |
79 | + // すべてのアクションに適用するフィルタ。 | |
80 | + // フィルタのクラス名をキー、パラメータを値とする配列だが、パラメータがない場合は値にクラス名を記述することができる。 | |
81 | + // | |
82 | + // 例) | |
83 | + // // パラメータのない FooFilter と、パラメータ array('a'=>5) で初期化した BarFilter を適用する。 | |
84 | + // 'mojo.standard_filters' => array('FooFilter', 'BarFilter'=>array('a'=>5)); | |
85 | + // | |
86 | + // // 同じクラスのフィルタを複数設定したい場合は次のようにする。"." のあとは何でも良い。 | |
87 | + // 'mojo.standard_filters' => array('BarFilter.1'=>array('a'=>1), 'BarFilter.2'=>array('a'=>1)); | |
88 | + // | |
89 | + 'mojo.standard_filters' => array('LogSlowFilter'=>1000, 'PostValidationFilter'), | |
90 | + ), | |
79 | 91 | |
80 | - // すべてのアクションに適用するフィルタ。 | |
81 | - // フィルタのクラス名をキー、パラメータを値とする配列だが、パラメータがない場合は値にクラス名を記述することができる。 | |
82 | - // | |
83 | - // 例) | |
84 | - // // パラメータのない FooFilter と、パラメータ array('a'=>5) で初期化した BarFilter を適用する。 | |
85 | - // 'mojo.standard_filters' => array('FooFilter', 'BarFilter'=>array('a'=>5)); | |
86 | - // | |
87 | - // // 同じクラスのフィルタを複数設定したい場合は次のようにする。"." のあとは何でも良い。 | |
88 | - // 'mojo.standard_filters' => array('BarFilter.1'=>array('a'=>1), 'BarFilter.2'=>array('a'=>1)); | |
89 | - // | |
90 | - 'mojo.standard_filters' => array('LogSlowFilter'=>1000, 'PostValidationFilter'), | |
91 | - ), | |
92 | + // メール関連。 | |
93 | + 'smtp' => array( | |
94 | + # 'server' => 'tcp://example.com:587', // SMTPサーバー | |
95 | + # 'server' => 'tls://example.com:465', // SMTPサーバー(SSLの場合) | |
96 | + 'server' => 'file', // ログファイルに出力する場合 | |
97 | + 'userid' => 'your_username', // SMTPユーザ名 | |
98 | + 'password' => 'your_password', // SMTPパスワード | |
99 | + 'fromaddr' => 'test@example.com', // システムから送るメールのFromアドレス | |
100 | + ), | |
92 | 101 | |
93 | - // これらは実行時に設定される。ここには説明のためにキーのみが記述されている。 | |
94 | - 'runtime' => array( | |
95 | - 'mojo.requested_site' => '', // リクエストされているサイト名。 | |
96 | - 'mojo.requested_action' => '', // リクエストされているグループ・モーション名。 | |
97 | - 'mojo.requested_name' => '', // 上記二つを "/" で連結したもの。 | |
98 | - 'mojo.front_dir' => '', // REQUEST_URI から PATH_INFO を除き、さらに実行ファイル部分を除いたもの。 | |
99 | - // たとえば、/some/path/index.php/abc/def であれば /some/path | |
100 | - 'mojo.front_file' => '', // 実行ファイルの名前。上記の例なら index.php | |
101 | - 'mojo.path_info' => '', // PATH_INFO にルーティング設定を反映したもの。 | |
102 | - 'real_get' => null, // $_GET のコピー。処理の途中で $_GET を変更しているような場合に、変更前の値にアクセスしたいときに参照できる。 | |
103 | - 'real_post' => null, // 同、$_POST。 | |
104 | - ), | |
102 | + // SMS関連。 | |
103 | + 'sms' => array( | |
104 | + 'account' => 'twilio_account_sid', // TwilioアカウントSID。"file" とした場合はログディレクトリに出力する。 | |
105 | + 'sid' => 'api_key_sid', // API Credentials を使う場合はそのSID。アカウントSIDをそのまま使うなら空文字。 | |
106 | + 'secret' => 'twilio_auth_token_or_api_key_secret', // Twilio Auth Token か、API Credentials を使う場合はそのシークレット | |
107 | + 'fromno' => '+00000000000', // From番号。Twilioで取得した番号である必要がある。 | |
108 | + ), | |
105 | 109 | |
106 | - // その他設定。 | |
107 | - 'application' => array( | |
108 | - 'app_name' => 'テストアプリ', // アプリ名 | |
109 | - 'from_address' => 'test@example.com', // システムから送るメールのFromアドレス | |
110 | - 'sms_fromno' => '+00000000000', // システムから送るSMSのFrom番号。Twilioで取得した番号である必要がある。 | |
111 | - 'versatile_secret' => 'fooisbar.fooisbar.fooisbar.foois', // 汎用的に使用するハッシュシークレット | |
112 | - 'password_pepper' => 'barisfoo.barisfoo.barisfoo.baris', // ユーザのパスワードハッシュに使用するペッパー。 | |
113 | - // 変更すると全ユーザのパスワードハッシュが変わるので余程のことがないと変更は出来ない。 | |
114 | - ), | |
110 | + // その他設定。 | |
111 | + 'application' => array( | |
112 | + 'app_name' => 'テストアプリ', // アプリ名 | |
113 | + 'versatile_secret' => 'fooisbar.fooisbar.fooisbar.foois', // 汎用的に使用するハッシュシークレット | |
114 | + 'password_pepper' => 'barisfoo.barisfoo.barisfoo.baris', // ユーザのパスワードハッシュに使用するペッパー。 | |
115 | + // 変更すると全ユーザのパスワードハッシュが変わるので余程のことがないと変更は出来ない。 | |
115 | 116 | |
116 | - // 環境の設定。基本的に environment.php のほうで設定するのだが、どの環境でもまず同じものをこちらで定義している。 | |
117 | - // 同名のキーが environment.php にもある場合はそちらが優先。 | |
118 | - 'environment' => array( | |
119 | - ), | |
117 | + 'environment_type' => '', // この辺は environment.php のほうで設定するので説明もそちらに。 | |
118 | + 'sql_debug' => '', // | |
119 | + 'maintenance_mode' => false, // | |
120 | + 'http_host' => '', // | |
121 | + 'asset_host' => '', // | |
120 | 122 | ), |
121 | 123 | |
122 | - // environment.php で値を追加・上書きできるようにする。 | |
123 | - include __DIR__.'/environment.php' | |
124 | + 'database.databases' => array(), // | |
125 | + 'database.tables' => array(), // | |
126 | + | |
127 | + // これらは実行時に設定される。ここには説明のためにキーのみが記述されている。 | |
128 | + 'runtime' => array( | |
129 | + 'mojo.requested_site' => '', // リクエストされているサイト名。 | |
130 | + 'mojo.requested_action' => '', // リクエストされているグループ・モーション名。 | |
131 | + 'mojo.requested_name' => '', // 上記二つを "/" で連結したもの。 | |
132 | + 'mojo.front_dir' => '', // REQUEST_URI から PATH_INFO を除き、さらに実行ファイル部分を除いたもの。 | |
133 | + // たとえば、/some/path/index.php/abc/def であれば /some/path | |
134 | + 'mojo.front_file' => '', // 実行ファイルの名前。上記の例なら index.php | |
135 | + 'mojo.path_info' => '', // PATH_INFO にルーティング設定を反映したもの。 | |
136 | + 'real_get' => null, // $_GET のコピー。処理の途中で $_GET を変更しているような場合に、変更前の値にアクセスしたいときに参照できる。 | |
137 | + 'real_post' => null, // 同、$_POST。 | |
138 | + ), | |
124 | 139 | ); |
140 | + | |
141 | +// environment.php で記述された値を上書きマージ。 | |
142 | +return array_replace_recursive($settings, include __DIR__.'/environment.php'); |
@@ -21,7 +21,6 @@ | ||
21 | 21 | if( !$this->filterByClass('ApiBehaviorFilter') ) { |
22 | 22 | |
23 | 23 | // 次の変数を全アクションで使えるようにする。 |
24 | - $this->renderer['environment'] = AppMojo::setting('environment'); | |
25 | 24 | $this->renderer['application'] = AppMojo::setting('application'); |
26 | 25 | |
27 | 26 | // backtoパラメータを解析してヘッダ部分のメニューバック階層を得る。 |
@@ -73,7 +73,7 @@ | ||
73 | 73 | <a href="{[url_for action='index']}"> |
74 | 74 | <div style="background-color:black"><img src="{[asset_url path='admin/title.jpg']}" style="width:100%" /></div> |
75 | 75 | </a> |
76 | - <div id="environment">{[switch value=$environment.environment_type dev='テスト' stage='ステージ' prod='本番']}環境</div> | |
76 | + <div id="environment">{[switch value=$application.environment_type dev='テスト' stage='ステージ' prod='本番']}環境</div> | |
77 | 77 | <!-- 各メニュー --> |
78 | 78 | <div style="padding:1ex"> |
79 | 79 | <ul class="categories"> |
@@ -33,7 +33,7 @@ | ||
33 | 33 | // 以降、求められているパスはディレクトリと解釈する。 |
34 | 34 | |
35 | 35 | // クリアが指示されているなら実行する。 |
36 | - if( @$_POST['clear'] && AppMojo::getEnvironment('environment_type') != 'prod') { | |
36 | + if( @$_POST['clear'] && AppMojo::setting('application', 'environment_type') != 'prod') { | |
37 | 37 | |
38 | 38 | foreach(scandir2($target) as $name) { |
39 | 39 | if( !in_array($name, ['.gitkeep', '.gitignore']) |
@@ -27,8 +27,8 @@ | ||
27 | 27 | |
28 | 28 | <form action="{[url_for _here=true]}" method="post" style="margin:1em 0px"> |
29 | 29 | <hr /> |
30 | - <button type="submit" name="clear" value="go" {[if $environment.environment_type=='prod']}disabled="disabled"{[/if]}>このディレクトリをクリアする</button> | |
31 | - {[if $environment.environment_type == 'prod']}※本番環境ではクリアは実行できません{[/if]} | |
30 | + <button type="submit" name="clear" value="go" {[if $application.environment_type=='prod']}disabled="disabled"{[/if]}>このディレクトリをクリアする</button> | |
31 | + {[if $application.environment_type == 'prod']}※本番環境ではクリアは実行できません{[/if]} | |
32 | 32 | </form> |
33 | 33 | |
34 | 34 | {[/block]} |
@@ -19,15 +19,15 @@ | ||
19 | 19 | return cls; |
20 | 20 | } |
21 | 21 | }; |
22 | - Runtime["app_base"] = "{[UrlUtil::toAbsolute(AppMojo::getBaseUrl())]}/"; // アプリベースURL | |
23 | - Runtime["server_base"] = "{[UrlUtil::toAbsolute($smarty.const.APP_WEB)]}"; // サーバーベースURL | |
24 | - Runtime["cdn_base"] = "{[AppMojo::getEnvironment('asset_host')]}/"; // CDNベースURL | |
25 | - Runtime["version_stamp"] = {[AppMojo::getVersionStamp()|json nofilter]}; // クライアント側でアセットパスを生成するときに使う汎用更新スタンプ | |
26 | - // APIコール時の現在バージョンとしても使う。 | |
22 | + Runtime["app_base"] = "{[UrlUtil::toAbsolute(AppMojo::getBaseUrl())]}/"; // アプリベースURL | |
23 | + Runtime["server_base"] = "{[UrlUtil::toAbsolute($smarty.const.APP_WEB)]}"; // サーバーベースURL | |
24 | + Runtime["cdn_base"] = "{[AppMojo::setting('application', 'asset_host')]}/"; // CDNベースURL | |
25 | + Runtime["version_stamp"] = {[AppMojo::getVersionStamp()|json nofilter]}; // クライアント側でアセットパスを生成するときに使う汎用更新スタンプ | |
26 | + // APIコール時の現在バージョンとしても使う。 | |
27 | 27 | Runtime["requested_site"] = {[AppMojo::setting('runtime', 'mojo.requested_site')|json nofilter]}; |
28 | - // リクエストされているサイト名。サービス名じゃないよ。 | |
28 | + // リクエストされているサイト名。サービス名じゃないよ。 | |
29 | 29 | Runtime["requested_action"] = {[AppMojo::setting('runtime', 'mojo.requested_action')|json nofilter]}; |
30 | - // リクエストされているグループ・アクション名。 | |
30 | + // リクエストされているグループ・アクション名。 | |
31 | 31 | </script> |
32 | 32 | |
33 | 33 | {[block name="site-head"]}{[/block]} |
@@ -35,7 +35,7 @@ | ||
35 | 35 | {[block name="head"]}{[/block]} |
36 | 36 | </head> |
37 | 37 | |
38 | - <body class="{[AppMojo::getFrontController()]}-view {[AppMojo::getEnvironment('environment_type')]}-env" id="edit"> | |
38 | + <body class="{[AppMojo::getFrontController()]}-view {[AppMojo::setting('application', 'environment_type')]}-env" id="edit"> | |
39 | 39 | |
40 | 40 | <noscript style="display:block; background-color:yellow; color:black; font-weight:bold; text-align:center; padding:1ex">JavaScriptをONにしてください</noscript> |
41 | 41 |