-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmessage.html
More file actions
262 lines (196 loc) · 13.7 KB
/
message.html
File metadata and controls
262 lines (196 loc) · 13.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>メッセージファイルの管理 | SOCKET-MANAGER Framework For PHP</title>
<meta name="description" content="SOCKET-MANAGERフレームワークでのメッセージ管理システムを解説。多言語対応、プレースホルダの使用方法、Laravelライクな__ヘルパー関数の実装例を具体的なコードと共に紹介。" />
<meta content="PHP,ソケット通信,サーバー開発,framework,IPC,ソケットマネージャー" name="keywords">
<link rel="canonical" href="https://socket-manager.github.io/document/message.html" />
<script async src="https://www.googletagmanager.com/gtag/js?id=G-LF9W695NNW"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-LF9W695NNW');
</script>
<link rel="icon" href="https://socket-manager.github.io/document/favicon.ico" type="image/x-icon" />
<link type="text/css" rel="stylesheet" href="./css/common.css" media="all" />
<script src="./js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="./js/common.js"></script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "TechArticle",
"headline": "SOCKET-MANAGER Framework - メッセージファイル管理ガイド",
"description": "SOCKET-MANAGERフレームワークにおけるメッセージ管理システムを解説。多言語対応、プレースホルダの使用方法、Laravelライクな__ヘルパー関数の実装例を具体的なコードと共に紹介。",
"keywords": "PHP, Laravel, メッセージ管理, 多言語対応, i18n, ソケットマネージャー",
"articleSection": ["Technical Documentation", "Server Development", "PHP Programming"],
"author": {
"@type": "Person",
"name": "SOCKET-MANAGER開発チーム"
},
"publisher": {
"@type": "Organization",
"name": "SOCKET-MANAGER",
"logo": {
"@type": "ImageObject",
"url": "https://socket-manager.github.io/document/logo.png",
"width": 355,
"height": 50
}
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://socket-manager.github.io/document/message.html"
},
"url": "https://socket-manager.github.io/document/message.html",
"breadcrumb": {
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Framework Top",
"item": "https://socket-manager.github.io/document/"
},{
"@type": "ListItem",
"position": 2,
"name": "メッセージファイルの管理",
"item": "https://socket-manager.github.io/document/message.html"
}]
},
"isPartOf": {
"@type": "WebSite",
"name": "フレームワークのご紹介",
"url": "https://socket-manager.github.io/document/"
}
}
</script>
</head>
<body>
<div class="layout">
<div class="menu" role="navigation" aria-label="ページメニュー">
<h2 class="menu-title">SOCKET-MANAGER</h2>
<h4 class="menu-reference menu-page-title-bottom"><a href="./reference/" target="_blank">>> Reference</a></h4>
<h2 class="menu-label">MAIN-MENU</h2>
<div class="menu-text">
<h3 class="menu-page-title-link"><a href="./">▶フレームワークのご紹介</a></h3>
<h3 class="menu-page-title-link"><a href="./event-handler.html">▶イベントハンドラについて</a></h3>
</div>
<h3 class="menu-label-sub">IMPLEMENT</h3>
<div class="menu-text">
<h3 class="menu-page-title-link"><a href="./init-class.html">▶初期化クラス</a></h3>
<h3 class="menu-page-title-link"><a href="./unit-parameter.html">▶UNITパラメータクラス</a></h3>
<h3 class="menu-page-title-link"><a href="./protocol-unit.html">▶プロトコルUNITクラス</a></h3>
<h3 class="menu-page-title-link"><a href="./command-unit.html">▶コマンドUNITクラス</a></h3>
<h3 class="menu-page-title-link"><a href="./main.html">▶メイン処理クラス</a></h3>
<h3 class="menu-page-title-link"><a href="./setting.html">▶設定ファイル</a></h3>
<h3 class="menu-page-title">▼メッセージファイル</h3>
<ul>
<li><a href="./message.html#begin">はじめに</a></li>
</ul>
<ul>
<li><a href="./message.html#use-case">メッセージの使い方</a></li>
</ul>
</div>
<div class="menu-line"></div>
<div class="menu-text">
<h3 class="menu-page-title-link-for-runtime-manager"><a href="./runtime-manager/" target="_blank">>> ランタイムライブラリ</a></h3>
<h3 class="menu-page-title-link-for-runtime-manager"><a href="./simple-socket/" target="_blank">>> シンプルソケット機能</a></h3>
</div>
<h3 class="menu-label-sub">ADVANCED</h3>
<div class="menu-text">
<h3 class="menu-page-title-link"><a href="./architecture.html">▶アーキテクチャ</a></h3>
<h3 class="menu-page-title-link"><a href="./event.html">▶イベント駆動アーキテクチャ</a></h3>
<h3 class="menu-page-title-link"><a href="./ipc.html">▶IPC(プロセス間通信)</a></h3>
<h3 class="menu-page-title-link"><a href="./multi-server.html">▶マルチサーバーの構成</a></h3>
<h3 class="menu-page-title-link"><a href="./tcp-and-udp.html">▶TCP/UDP通信について</a></h3>
<h3 class="menu-page-title-link"><a href="./laravel.html">▶Laravelと連携する</a></h3>
<h3 class="menu-page-title-link"><a href="./system-setting.html">▶システム設定ファイル</a></h3>
<h3 class="menu-page-title-link"><a href="./custom-command.html">▶カスタムコマンド作成機能</a></h3>
</div>
<h3 class="menu-label-sub">OTHER-PROJECT</h3>
<div class="menu-text">
<h3 class="menu-page-title-link"><a href="./new-project.html">▶新規開発環境</a></h3>
<h3 class="menu-page-title-link"><a href="./websocket.html">▶Websocketサーバー開発環境</a></h3>
<h3 class="menu-page-title-link"><a href="./dev-ops.html">▶フレームワークのDevOps環境</a></h3>
</div>
<div class="menu-line"></div>
<div class="menu-text">
<h3 class="menu-page-title-link-for-minecraft"><a href="./minecraft-contents/" target="_blank">>> マインクラフト専用環境</a></h3>
<h3 class="menu-page-title-link-for-launcher"><a href="./launcher/" target="_blank">>> GUI & CLI ランチャー</a></h3>
<h3 class="menu-page-title-link-for-rest-api"><a href="./rest-api/" target="_blank">>> REST-APIサーバー開発環境</a></h3>
</div>
<h2 class="menu-label">EXTRA-MENU</h2>
<div class="menu-text">
<h3 class="menu-page-title-link"><a href="./extra-demo.html">▶デモサーバーの種類</a></h3>
<h3 class="menu-page-title-link"><a href="./extra-demo-command.html">▶デモのコマンド仕様</a></h3>
<h3 class="menu-page-title-link"><a href="./extra-demo-setting.html">▶デモの設定ファイル</a></h3>
<h3 class="menu-page-title-link"><a href="./extra-minecraft.html">▶マインクラフトの通信仕様</a></h3>
<h3 class="menu-page-title-link"><a href="./extra-close-frame.html">▶切断フレームの検証</a></h3>
</div>
<h2 class="menu-label">PHP-TECHNIQUE</h2>
<div class="menu-text">
<h3 class="menu-page-title-link"><a href="./php-pass-by-reference.html">▶参照渡し</a></h3>
<h3 class="menu-page-title-link"><a href="./php-phpdoc.html">▶PHPDocのフォーマット</a></h3>
</div>
<div class="menu-dummy-for-framework"></div>
</div>
<div class="main" role="main">
<h1>【メッセージファイルの管理】</h1>
<a id="begin"></a>
<h2 class="subtitle">はじめに</h2>
<div class="text-block">
固定で頻繁に扱うようなメッセージは、あらかじめ決められた場所にメッセージファイルとして書き出す事が可能で、専用のコマンドを使ってスキャフォールディングできます。<br />
ファイル形式やメッセージを取得するヘルパー関数(__)はLaravel環境に合わせてあるので(多言語対応やプレースホルダにも対応)、Laravelとの連携も容易にできます。<br /><br />
※Laravelとの連携方法の詳細については<font><a href="./laravel.html" target="_blank">▶Laravelと連携する</a></font>のページをご覧下さい。<br /><br />
メッセージファイルは以下のコマンドで作成できます。<br />
<pre color-change="command" aria-label="コマンド実行(testというファイル名を指定する場合)">
> php worker craft:locale test
[success] メッセージファイルの生成に成功しました (test)
</pre><br />
メッセージ管理のコマンドは<code>setting/app.php</code>内の<code>locale</code>設定項目と連動しますので多言語対応で管理できます。<br />
例えば<code>locale</code>の項目が<code>ja</code>の場合で、<code>test.php</code>というファイルを指定した場合は、<code>locale/ja/test.php</code>というファイルが作成されます。<br />
</div><br />
<a id="use-case"></a>
<h2 class="subtitle">メッセージの使い方</h2>
<div class="text-block">
作成されたファイルには次の通り、空の配列のリターン値のみコーディングされています。<br />
<pre color-change="php" aria-label="locale/ja/test.php">
return [
];
</pre><br />
例えばtest_messageという設定名のメッセージを管理する場合は、以下のように記載します。<br />
<pre color-change="php" aria-label="locale/ja/test.php">
return [
'test_message' => 'テストメッセージ'
];
</pre><br />
そしてメッセージが必要な時に<code>__</code>ヘルパー関数を使って以下のように取得できます。<br />
<pre color-change="php" aria-label="__ヘルパー関数でメッセージを取得">
$message = __('test.test_message');
</pre><br />
メッセージファイル内のメッセージを取得するヘルパー関数(__)はLaravelと同様に使えるように以下の仕様で実装しています<br />
<pre aria-label="シグネチャ">
【メソッド】__(string $p_key, array $p_placeholder = []): string
【パラメータ】
$p_key - string - 必須 - ファイル名を含めたキー名(ピリオド区切りで指定)
$p_placeholder - array - 任意 - プレースホルダに値を代入するための連想配列
【戻り値】string - 第一パラメータで指定されたキーに対応するメッセージ or メッセージが取得できなかった時は第一パラメータで指定されたキー名
</pre><br />
また、以下のようにプレースホルダも使えます。<br />
例えば自己紹介の文章の中で、名前と年齢を置き換え可能にする場合、キーワードの先頭にコロン(:)を付けて以下のように記載します。<br />
<pre color-change="php" aria-label="locale/ja/test.php">
return [
'test_message' => '私の名前は:nameです。年齢は:age歳です。'
];
</pre>
<pre color-change="php" aria-label="プレースホルダを使ってメッセージを取得">
$message = __('test.test_message', ['name' => '山田太郎', 'age' => 20]);
</pre><br />
変数$messageには「私の名前は山田太郎です。年齢は20歳です。」という文字列が格納されます。
</div><br />
</div>
</div>
</body>
</html>