-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetting.html
More file actions
304 lines (230 loc) · 13.9 KB
/
setting.html
File metadata and controls
304 lines (230 loc) · 13.9 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
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
<!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フレームワークの設定ファイル管理方法を解説。ホスト名やポート番号などの設定管理、configヘルパー関数の使用方法、コマンドライン引数との併用例を具体的なコードと共に紹介。" />
<meta content="PHP,ソケット通信,サーバー開発,framework,IPC,ソケットマネージャー" name="keywords">
<link rel="canonical" href="https://socket-manager.github.io/document/setting.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フレームワークにおける設定ファイル管理方法を解説。ホスト名やポート番号などの設定管理、configヘルパー関数の使用方法、コマンドライン引数との併用例を具体的なコードと共に紹介。",
"keywords": "PHP, ソケット通信, 設定ファイル, config, Laravel, ソケットマネージャー",
"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/setting.html"
},
"url": "https://socket-manager.github.io/document/setting.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/setting.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">▼設定ファイル</h3>
<ul>
<li><a href="./setting.html#begin">はじめに</a></li>
</ul>
<ul>
<li><a href="./setting.html#use-case">設定値の使い方</a></li>
</ul>
<h3 class="menu-page-title-link"><a href="./message.html">▶メッセージファイル</a></h3>
</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 />
ファイル形式やデータを取得するヘルパー関数(config)は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:setting test
[success] 設定ファイルの生成に成功しました (test)
</pre><br />
上記のコマンドを実行する事で<code>setting/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="setting/test.php">
return [
];
</pre><br />
例えばホスト名やポート番号などを設定ファイルで管理する場合は、以下のように記載します。<br />
<pre color-change="php" aria-label="setting/test.php">
return [
/**
* @var string ホスト名
*/
'host' => 'localhost',
/**
* @var int ポート番号
*/
'port' => 10000
];
</pre><br />
この設定値を初期状態のメイン処理クラスで実装するには、以下のように記載します。<br />
<pre color-change="php" aria-label="メイン処理クラス内">
public function exec()
{
// ホスト名の取得
$host = config('test.host', null);
// ポート番号の取得
$port = config('test.port', null);
// ソケットマネージャーのインスタンス設定
$manager = new SocketManager($host, $port);
・
・
・
}
</pre><br />
設定ファイル内の設定値を取得するヘルパー関数(config)はLaravelと同様に以下の仕様になっています。<br />
<pre aria-label="シグネチャ">
【メソッド】config(string $p_key, $p_default = null): mixed
【パラメータ】
$p_key - string - 必須 - ファイル名を含めたキー名(ピリオド区切りで指定)
$p_default - mixed - 任意 - 値が取得できなかった場合のデフォルト値
【戻り値】mixed - 第一パラメータで指定されたキーに対応する値 or 値が取得できなかった時は第二パラメータの値
</pre><br />
コマンドライン引数と併用する場合は以下のようになります。<br />
<pre color-change="php" aria-label="メイン処理クラス内(コマンドライン引数との併用パターン)">
public function exec()
{
// ホスト名の取得
$host = config('test.host', null);
// コマンドライン引数の指定があればそれを優先する
$w_ret = $this->getParameter('host');
if($w_ret !== null)
{
$host = $w_ret;
}
// ポート番号の取得
$port = config('test.port', null);
// コマンドライン引数の指定があればそれを優先する
$w_ret = $this->getParameter('post');
if($w_ret !== null)
{
$port = $w_ret;
}
// ソケットマネージャーのインスタンス設定
$manager = new SocketManager($host, $port);
・
・
・
}
</pre><br />
今回はメイン処理クラス内での実装例をご紹介していますが、<code>config</code>ヘルパ関数は基本的にどの場所でも使えます。<br />
</div><br />
</div>
</div>
</body>
</html>