回答編集履歴
43
微調整
answer
CHANGED
@@ -298,7 +298,7 @@
|
|
298
298
|
- コードを追う (コードの理解)
|
299
299
|
|
300
300
|
|
301
|
-
>
|
301
|
+
> コードの理解のための NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
|
302
302
|
> **サンプルコード の「処理の流れ」と「変数の値」を調べるために** 使います
|
303
303
|
>
|
304
304
|
> どんなツールも初めは大変ですが、すぐに慣れます
|
42
微調整
answer
CHANGED
@@ -291,14 +291,14 @@
|
|
291
291
|
すべての写経のエラーを解決しても、フレームワークの内部とオブジェクト指向は理解できません
|
292
292
|
##### 「NetBeans IDE デバッグ機能」 使って「フレームワークの内部」と「オブジェクト指向」を理解しましょう (ダウンロードした サンプルコード 使用)
|
293
293
|
|
294
|
-
> NetBeans IDE デバッグ機能
|
294
|
+
> NetBeans IDE デバッグ機能 には、2通りの使い方があります
|
295
295
|
>
|
296
296
|
- バグを見つける (本来のデバッグ)
|
297
297
|
>
|
298
298
|
- コードを追う (コードの理解)
|
299
299
|
|
300
300
|
|
301
|
-
> NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
|
301
|
+
> 今回の NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
|
302
302
|
> **サンプルコード の「処理の流れ」と「変数の値」を調べるために** 使います
|
303
303
|
>
|
304
304
|
> どんなツールも初めは大変ですが、すぐに慣れます
|
41
微調整
answer
CHANGED
@@ -21,7 +21,6 @@
|
|
21
21
|
>
|
22
22
|
> [パーフェクトPHP をデバッグしました (学習方法)](https://beginner001.hatenablog.com/entry/2018/12/27/100003)
|
23
23
|
> [パーフェクトPHP をデバッグしました (やる気のある初心者)](https://beginner001.hatenablog.com/entry/2018/12/27/100004)
|
24
|
-
> [NetBeans IDE のおかげで理解が飛躍的に](https://blogs.yahoo.co.jp/amegrapsp/41551211.html) (Mac ユーザ の NetBeans IDE 使用)
|
25
24
|
|
26
25
|
パーフェクトPHP をデバッグしました (学習方法) や
|
27
26
|
パーフェクトPHP をデバッグしました (やる気のある初心者) に
|
40
微調整
answer
CHANGED
@@ -293,8 +293,9 @@
|
|
293
293
|
##### 「NetBeans IDE デバッグ機能」 使って「フレームワークの内部」と「オブジェクト指向」を理解しましょう (ダウンロードした サンプルコード 使用)
|
294
294
|
|
295
295
|
> NetBeans IDE デバッグ機能
|
296
|
+
>
|
296
297
|
- バグを見つける (本来のデバッグ)
|
297
|
-
>
|
298
|
+
>
|
298
299
|
- コードを追う (コードの理解)
|
299
300
|
|
300
301
|
|
39
微調整
answer
CHANGED
@@ -264,7 +264,7 @@
|
|
264
264
|
MiniBlogApplication.php に**エラーが無い場合**
|
265
265
|
DbManager.php と Application.php のコード提示をしてもらう予定
|
266
266
|
...
|
267
|
-
|
267
|
+
(__MiniBlogApplication.php__ にエラーがあったので、コードの提示は必要無くなった)
|
268
268
|
|
269
269
|
---
|
270
270
|
|
@@ -292,15 +292,20 @@
|
|
292
292
|
すべての写経のエラーを解決しても、フレームワークの内部とオブジェクト指向は理解できません
|
293
293
|
##### 「NetBeans IDE デバッグ機能」 使って「フレームワークの内部」と「オブジェクト指向」を理解しましょう (ダウンロードした サンプルコード 使用)
|
294
294
|
|
295
|
+
> NetBeans IDE デバッグ機能
|
296
|
+
- バグを見つける (本来のデバッグ)
|
295
|
-
>
|
297
|
+
>
|
298
|
+
- コードを追う (コードの理解)
|
299
|
+
|
300
|
+
|
296
301
|
> NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
|
297
302
|
> **サンプルコード の「処理の流れ」と「変数の値」を調べるために** 使います
|
298
303
|
>
|
299
304
|
> どんなツールも初めは大変ですが、すぐに慣れます
|
300
305
|
> 特に、**初心者の方** には効果が大きいです
|
301
306
|
> [**デバッグ例**](http://beginner001.html.xdomain.jp/debug-04.html#NetBeans_debug_example)
|
302
|
-
>
|
303
307
|
|
308
|
+
|
304
309
|
詳細は、**参考サイトのリンク** をご覧ください
|
305
310
|
|
306
311
|
---
|
38
微調整
answer
CHANGED
@@ -51,6 +51,7 @@
|
|
51
51
|
注意点
|
52
52
|
- 公式サイト **サンプルコード(mini-blog.zip)** を使用 (不具合 2ヶ所修正)
|
53
53
|
- デバッグ中の変数の**変更**は、**メモリ上**です (ファイルは元のまま)
|
54
|
+
- index.php ではなく index**_dev**.php を使用します
|
54
55
|
|
55
56
|
> サンプルコードの仕様 と orangefarmerさんの仕様 との違い (ホームページ表示とログイン)
|
56
57
|
|
@@ -339,4 +340,8 @@
|
|
339
340
|
` $this->setDebugMode($debug);`
|
340
341
|
` $this->initialize();`
|
341
342
|
` $this->configure();` ← **空** のメソッドのまま co**n**figure (データベースへの接続設定 が **未定義**)
|
342
|
-
` }`
|
343
|
+
` }`
|
344
|
+
|
345
|
+
##### 上記エラーで、フレームワークとオブジェクト指向の「考え方」が良く分かります
|
346
|
+
|
347
|
+
---
|
37
微調整
answer
CHANGED
@@ -262,9 +262,9 @@
|
|
262
262
|
|
263
263
|
MiniBlogApplication.php に**エラーが無い場合**
|
264
264
|
DbManager.php と Application.php のコード提示をしてもらう予定
|
265
|
+
...
|
266
|
+
__ (MiniBlogApplication.php にエラーがあったので、コードの提示は必要無くなった) __
|
265
267
|
|
266
|
-
(MiniBlogApplication.php にエラーがあったので、コードの提示は必要無くなった)
|
267
|
-
|
268
268
|
---
|
269
269
|
|
270
270
|
**【修正箇所が分かる & NetBeans IDE デバッグ機能】**
|
36
微調整
answer
CHANGED
@@ -293,9 +293,12 @@
|
|
293
293
|
|
294
294
|
>
|
295
295
|
> NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
|
296
|
-
> 処理の流れ と 変数の値 が分かることで
|
297
|
-
> **
|
296
|
+
> **サンプルコード の「処理の流れ」と「変数の値」を調べるために** 使います
|
298
297
|
>
|
298
|
+
> どんなツールも初めは大変ですが、すぐに慣れます
|
299
|
+
> 特に、**初心者の方** には効果が大きいです
|
300
|
+
> [**デバッグ例**](http://beginner001.html.xdomain.jp/debug-04.html#NetBeans_debug_example)
|
301
|
+
>
|
299
302
|
|
300
303
|
詳細は、**参考サイトのリンク** をご覧ください
|
301
304
|
|
35
微調整
answer
CHANGED
@@ -69,7 +69,7 @@
|
|
69
69
|
- ログインする 仕様の場合、ホームページ表示前に userテーブル使用で **DB への接続ミス** が発生します
|
70
70
|
|
71
71
|
デバッグ対策 **下記** NetBeans ブレークポイント Session 49 参照
|
72
|
-
orangefarmerさんの仕様 に合わせるため
|
72
|
+
orangefarmerさんの仕様 に合わせるため、強引に **未ログイン状態 可** にしています
|
73
73
|
|
74
74
|
参考
|
75
75
|
- [処理の流れ | ホームページと投稿](http://beginner001.html.xdomain.jp/debug-02-2.html)
|
34
微調整
answer
CHANGED
@@ -69,6 +69,7 @@
|
|
69
69
|
- ログインする 仕様の場合、ホームページ表示前に userテーブル使用で **DB への接続ミス** が発生します
|
70
70
|
|
71
71
|
デバッグ対策 **下記** NetBeans ブレークポイント Session 49 参照
|
72
|
+
orangefarmerさんの仕様 に合わせるために、強引に **未ログイン状態 可** にしています
|
72
73
|
|
73
74
|
参考
|
74
75
|
- [処理の流れ | ホームページと投稿](http://beginner001.html.xdomain.jp/debug-02-2.html)
|
33
微調整
answer
CHANGED
@@ -103,7 +103,7 @@
|
|
103
103
|
[NetBeans デバッグ方法](http://beginner001.html.xdomain.jp/debug-04.html) 参照
|
104
104
|
|
105
105
|
**原因**
|
106
|
-
> デバッグを実行すると、最後に **エラーが再現** されます
|
106
|
+
> デバッグを実行すると、最後に **エラーが「再現」** されます
|
107
107
|
>
|
108
108
|
> 「正しい」**データベースへの接続設定 (PDO インスタンス)** の
|
109
109
|
**$this->con** を「壊しています」
|
32
微調整
answer
CHANGED
@@ -102,7 +102,7 @@
|
|
102
102
|
**注 Session 49 は、ブレークポイントではありません**
|
103
103
|
[NetBeans デバッグ方法](http://beginner001.html.xdomain.jp/debug-04.html) 参照
|
104
104
|
|
105
|
-
|
105
|
+
**原因**
|
106
106
|
> デバッグを実行すると、最後に **エラーが再現** されます
|
107
107
|
>
|
108
108
|
> 「正しい」**データベースへの接続設定 (PDO インスタンス)** の
|
@@ -111,7 +111,6 @@
|
|
111
111
|
> (DbRepository 41* **$this->con** false に変更)
|
112
112
|
>
|
113
113
|
> エラーの原因は、**DB への接続ミス**です
|
114
|
-
>
|
115
114
|
|
116
115
|
Application.php
|
117
116
|
```PHP
|
31
微調整
answer
CHANGED
@@ -64,7 +64,7 @@
|
|
64
64
|
>>
|
65
65
|
- **未ログイン**で、ホームページ表示が実行されます (今回は **DB への接続ミス** で 処理は中断)
|
66
66
|
>>
|
67
|
-
- エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**) 本来は、NULLの部分に ログインユーザ ($user['id']) の値がセットされます
|
67
|
+
- エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**) 本来は、NULLの部分に ログインユーザ ($user['id']) の 値 がセットされます
|
68
68
|
>>
|
69
69
|
- ログインする 仕様の場合、ホームページ表示前に userテーブル使用で **DB への接続ミス** が発生します
|
70
70
|
|
30
微調整
answer
CHANGED
@@ -52,8 +52,8 @@
|
|
52
52
|
- 公式サイト **サンプルコード(mini-blog.zip)** を使用 (不具合 2ヶ所修正)
|
53
53
|
- デバッグ中の変数の**変更**は、**メモリ上**です (ファイルは元のまま)
|
54
54
|
|
55
|
-
サンプルコードの仕様 と orangefarmerさんの仕様 との違い (ホームページ表示とログイン)
|
55
|
+
> サンプルコードの仕様 と orangefarmerさんの仕様 との違い (ホームページ表示とログイン)
|
56
|
-
|
56
|
+
|
57
57
|
> サンプルコードの仕様
|
58
58
|
>>
|
59
59
|
- ホームページは、**ログイン後**に表示されます
|
@@ -62,7 +62,7 @@
|
|
62
62
|
|
63
63
|
> orangefarmerさんの仕様
|
64
64
|
>>
|
65
|
-
- **未ログイン**で、ホームページ表示が実行されます (今回は **DB への接続ミス** で
|
65
|
+
- **未ログイン**で、ホームページ表示が実行されます (今回は **DB への接続ミス** で 処理は中断)
|
66
66
|
>>
|
67
67
|
- エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**) 本来は、NULLの部分に ログインユーザ ($user['id']) の値がセットされます
|
68
68
|
>>
|
@@ -104,7 +104,10 @@
|
|
104
104
|
|
105
105
|
>
|
106
106
|
> デバッグを実行すると、最後に **エラーが再現** されます
|
107
|
+
>
|
107
|
-
> 「正しい」**データベースへの接続設定 (PDO インスタンス)** の
|
108
|
+
> 「正しい」**データベースへの接続設定 (PDO インスタンス)** の
|
109
|
+
**$this->con** を「壊しています」
|
110
|
+
>
|
108
111
|
> (DbRepository 41* **$this->con** false に変更)
|
109
112
|
>
|
110
113
|
> エラーの原因は、**DB への接続ミス**です
|
@@ -283,7 +286,7 @@
|
|
283
286
|
- ホームページのデータ件数 ゼロ
|
284
287
|
- エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
|
285
288
|
- ログイン機能のデバッグ (or 実装)
|
286
|
-
- 写経 未完成 (ルーティング registerRoutes) **画像** MiniBlogApplication.phpの比較
|
289
|
+
- 写経 未完成 (ルーティング registerRoutes 参照) **画像** MiniBlogApplication.phpの比較 ↑
|
287
290
|
|
288
291
|
すべての写経のエラーを解決しても、フレームワークの内部とオブジェクト指向は理解できません
|
289
292
|
##### 「NetBeans IDE デバッグ機能」 使って「フレームワークの内部」と「オブジェクト指向」を理解しましょう (ダウンロードした サンプルコード 使用)
|
@@ -291,7 +294,7 @@
|
|
291
294
|
>
|
292
295
|
> NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
|
293
296
|
> 処理の流れ と 変数の値 が分かることで
|
294
|
-
> 「フレームワークの内部」と「オブジェクト指向」を理解するために使います
|
297
|
+
> **「フレームワークの内部」と「オブジェクト指向」を理解するために使います**
|
295
298
|
>
|
296
299
|
|
297
300
|
詳細は、**参考サイトのリンク** をご覧ください
|
29
微調整
answer
CHANGED
@@ -49,7 +49,7 @@
|
|
49
49
|
**NetBeans IDE デバッグ機能** を使った デバッグ です。
|
50
50
|
|
51
51
|
注意点
|
52
|
-
- 公式サイト サンプルコード(mini-blog.zip) を使用 (不具合 2ヶ所修正)
|
52
|
+
- 公式サイト **サンプルコード(mini-blog.zip)** を使用 (不具合 2ヶ所修正)
|
53
53
|
- デバッグ中の変数の**変更**は、**メモリ上**です (ファイルは元のまま)
|
54
54
|
|
55
55
|
サンプルコードの仕様 と orangefarmerさんの仕様 との違い (ホームページ表示とログイン)
|
@@ -173,20 +173,20 @@
|
|
173
173
|
|
174
174
|
**【コードを調べる】**
|
175
175
|
|
176
|
-
「**DB への接続** のスタートである」"**new PDO**" を検索 検索ツール(
|
176
|
+
「**DB への接続** のスタートである」"**new PDO**" を検索 検索ツール(__Devas__)
|
177
177
|
|ファイル|メソッド|
|
178
178
|
|:--|:--|
|
179
179
|
|DbManager.php |public function **connect(**$name, $params)|
|
180
180
|
|
181
181
|
|
182
|
-
"**connect(**" を検索 検索ツール(
|
182
|
+
"**connect(**" を検索 検索ツール(__Devas__)
|
183
183
|
|ファイル|メソッド|
|
184
184
|
|:--|:--|
|
185
185
|
|MiniBlogApplication.php|protected function **configure(**)|
|
186
186
|
|~~DbManager.php~~|~~public function connect($name, $params)~~ 同上|
|
187
187
|
|
188
188
|
|
189
|
-
"**configure(**" を検索 検索ツール(
|
189
|
+
"**configure(**" を検索 検索ツール(__Devas__)
|
190
190
|
|ファイル|メソッド|
|
191
191
|
|:--|:--|
|
192
192
|
|~~MiniBlogApplication.php~~|~~protected function configure()~~ 同上|
|
@@ -266,8 +266,10 @@
|
|
266
266
|
|
267
267
|
**【修正箇所が分かる & NetBeans IDE デバッグ機能】**
|
268
268
|
|
269
|
-
差分ツール (
|
269
|
+
差分ツール (**__WinMerge__**) で
|
270
|
+
MiniBlogApplication.php (サンプルコード) と
|
270
|
-
|
271
|
+
MiniBlogApplication.php (orangefarmer さん) を
|
272
|
+
比較する
|
271
273
|
|
272
274
|
|
273
275
|

|
@@ -281,10 +283,10 @@
|
|
281
283
|
- ホームページのデータ件数 ゼロ
|
282
284
|
- エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
|
283
285
|
- ログイン機能のデバッグ (or 実装)
|
284
|
-
- 写経 未完成
|
286
|
+
- 写経 未完成 (ルーティング registerRoutes) **画像** MiniBlogApplication.phpの比較 参照
|
285
287
|
|
286
288
|
すべての写経のエラーを解決しても、フレームワークの内部とオブジェクト指向は理解できません
|
287
|
-
##### NetBeans IDE デバッグ機能 使って「フレームワークの内部」と「オブジェクト指向」を理解しましょう (ダウンロードした サンプルコード 使用)
|
289
|
+
##### 「NetBeans IDE デバッグ機能」 使って「フレームワークの内部」と「オブジェクト指向」を理解しましょう (ダウンロードした サンプルコード 使用)
|
288
290
|
|
289
291
|
>
|
290
292
|
> NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
|
28
微調整
answer
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
>
|
22
22
|
> [パーフェクトPHP をデバッグしました (学習方法)](https://beginner001.hatenablog.com/entry/2018/12/27/100003)
|
23
23
|
> [パーフェクトPHP をデバッグしました (やる気のある初心者)](https://beginner001.hatenablog.com/entry/2018/12/27/100004)
|
24
|
-
> [NetBeans IDE のおかげで理解が飛躍的に](https://blogs.yahoo.co.jp/amegrapsp/41551211.html) (Mac ユーザ
|
24
|
+
> [NetBeans IDE のおかげで理解が飛躍的に](https://blogs.yahoo.co.jp/amegrapsp/41551211.html) (Mac ユーザ の NetBeans IDE 使用)
|
25
25
|
|
26
26
|
パーフェクトPHP をデバッグしました (学習方法) や
|
27
27
|
パーフェクトPHP をデバッグしました (やる気のある初心者) に
|
@@ -270,8 +270,8 @@
|
|
270
270
|
サンプルコード の MiniBlogApplication.php と orangefarmer さんの MiniBlogApplication.php を比較する
|
271
271
|
|
272
272
|
|
273
|
-

|
274
|
-
クリックすると、拡大表示します
|
274
|
+
**画像** MiniBlogApplication.phpの比較 (クリックすると、拡大表示します)
|
275
275
|
|
276
276
|
正 protected function co**n**figure()
|
277
277
|
誤 protected function cofigure()
|
@@ -281,7 +281,7 @@
|
|
281
281
|
- ホームページのデータ件数 ゼロ
|
282
282
|
- エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
|
283
283
|
- ログイン機能のデバッグ (or 実装)
|
284
|
-
- 写経 未完成? (ルーティング registerRoutes) **
|
284
|
+
- 写経 未完成? (ルーティング registerRoutes) **画像** MiniBlogApplication.phpの比較 参照
|
285
285
|
|
286
286
|
すべての写経のエラーを解決しても、フレームワークの内部とオブジェクト指向は理解できません
|
287
287
|
##### NetBeans IDE デバッグ機能 使って「フレームワークの内部」と「オブジェクト指向」を理解しましょう (ダウンロードした サンプルコード 使用)
|
27
微調整
answer
CHANGED
@@ -29,8 +29,8 @@
|
|
29
29
|
|
30
30
|
|
31
31
|
**【パーフェクトPHP デバッグ 動作環境】**
|
32
|
-
|
32
|
+
- XAMPP 5.6.31
|
33
|
-
|
33
|
+
- NetBeans 8.2
|
34
34
|
|
35
35
|
> **学習環境**なので XAMPP 7.x.x (PHP 7.x.x) にする必要はありません。
|
36
36
|
> XAMPP 7.x.x でも動作しますが、**Xdebug** の準備が必要です。
|
@@ -100,6 +100,7 @@
|
|
100
100
|
|DbRepository|41*|$this->con false に変更|続行 (F5)|
|
101
101
|
|
102
102
|
**注 Session 49 は、ブレークポイントではありません**
|
103
|
+
[NetBeans デバッグ方法](http://beginner001.html.xdomain.jp/debug-04.html) 参照
|
103
104
|
|
104
105
|
>
|
105
106
|
> デバッグを実行すると、最後に **エラーが再現** されます
|
@@ -277,9 +278,10 @@
|
|
277
278
|
|
278
279
|
|
279
280
|
今回のエラーを解決しても、別の不具合が出ます
|
280
|
-
|
281
|
+
- ホームページのデータ件数 ゼロ
|
281
|
-
|
282
|
+
- エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
|
282
|
-
|
283
|
+
- ログイン機能のデバッグ (or 実装)
|
284
|
+
- 写経 未完成? (ルーティング registerRoutes) **差分ツール図** 参照
|
283
285
|
|
284
286
|
すべての写経のエラーを解決しても、フレームワークの内部とオブジェクト指向は理解できません
|
285
287
|
##### NetBeans IDE デバッグ機能 使って「フレームワークの内部」と「オブジェクト指向」を理解しましょう (ダウンロードした サンプルコード 使用)
|
26
微調整
answer
CHANGED
@@ -21,6 +21,7 @@
|
|
21
21
|
>
|
22
22
|
> [パーフェクトPHP をデバッグしました (学習方法)](https://beginner001.hatenablog.com/entry/2018/12/27/100003)
|
23
23
|
> [パーフェクトPHP をデバッグしました (やる気のある初心者)](https://beginner001.hatenablog.com/entry/2018/12/27/100004)
|
24
|
+
> [NetBeans IDE のおかげで理解が飛躍的に](https://blogs.yahoo.co.jp/amegrapsp/41551211.html) (Mac ユーザ が NetBeans IDE を使用)
|
24
25
|
|
25
26
|
パーフェクトPHP をデバッグしました (学習方法) や
|
26
27
|
パーフェクトPHP をデバッグしました (やる気のある初心者) に
|
25
微調整
answer
CHANGED
@@ -51,18 +51,24 @@
|
|
51
51
|
- 公式サイト サンプルコード(mini-blog.zip) を使用 (不具合 2ヶ所修正)
|
52
52
|
- デバッグ中の変数の**変更**は、**メモリ上**です (ファイルは元のまま)
|
53
53
|
|
54
|
-
仕様 (ホームページ表示とログイン)
|
54
|
+
サンプルコードの仕様 と orangefarmerさんの仕様 との違い (ホームページ表示とログイン)
|
55
|
+
|
55
|
-
|
56
|
+
> サンプルコードの仕様
|
57
|
+
>>
|
56
58
|
- ホームページは、**ログイン後**に表示されます
|
59
|
+
>>
|
57
60
|
- ホームページ (エラー ログ #5 Application->runAction('**status**', '**index**', Array))
|
58
|
-
|
61
|
+
|
59
|
-
|
62
|
+
> orangefarmerさんの仕様
|
63
|
+
>>
|
60
|
-
- **未ログイン**で、ホームページ表示が実行されます (今回は **DB への接続ミス**)
|
64
|
+
- **未ログイン**で、ホームページ表示が実行されます (今回は **DB への接続ミス** で 表示は中断)
|
65
|
+
>>
|
61
66
|
- エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**) 本来は、NULLの部分に ログインユーザ ($user['id']) の値がセットされます
|
67
|
+
>>
|
62
68
|
- ログインする 仕様の場合、ホームページ表示前に userテーブル使用で **DB への接続ミス** が発生します
|
63
|
-
|
64
|
-
- デバッグ対策 **下記** NetBeans ブレークポイント Session 49 参照
|
65
69
|
|
70
|
+
デバッグ対策 **下記** NetBeans ブレークポイント Session 49 参照
|
71
|
+
|
66
72
|
参考
|
67
73
|
- [処理の流れ | ホームページと投稿](http://beginner001.html.xdomain.jp/debug-02-2.html)
|
68
74
|
- [処理の流れ | アカウント情報管理とログイン](http://beginner001.html.xdomain.jp/debug-02-4.html)
|
@@ -94,14 +100,13 @@
|
|
94
100
|
|
95
101
|
**注 Session 49 は、ブレークポイントではありません**
|
96
102
|
|
97
|
-
>
|
103
|
+
>
|
98
|
-
|
99
|
-
デバッグを実行すると、最後に **エラーが再現** されます
|
104
|
+
> デバッグを実行すると、最後に **エラーが再現** されます
|
100
|
-
「正しい」**データベースへの接続設定 (PDO インスタンス)** の **$this->con** を「壊しています」
|
105
|
+
> 「正しい」**データベースへの接続設定 (PDO インスタンス)** の **$this->con** を「壊しています」
|
101
|
-
(DbRepository 41* **$this->con** false に変更)
|
106
|
+
> (DbRepository 41* **$this->con** false に変更)
|
102
|
-
|
103
|
-
エラーの原因は、**DB への接続ミス**です
|
104
|
-
>
|
107
|
+
>
|
108
|
+
> エラーの原因は、**DB への接続ミス**です
|
109
|
+
>
|
105
110
|
|
106
111
|
Application.php
|
107
112
|
```PHP
|
@@ -247,13 +252,13 @@
|
|
247
252
|
|
248
253
|
|
249
254
|
**上記 3ファイル の メソッド を調べる**
|
250
|
-
|
255
|
+
3ファイルのうち、orangefarmer さんから コード提示されているのは、
|
251
256
|
MiniBlogApplication.php のみ
|
252
257
|
|
253
258
|
MiniBlogApplication.php に**エラーが無い場合**
|
254
259
|
DbManager.php と Application.php のコード提示をしてもらう予定
|
255
260
|
|
256
|
-
(MiniBlogApplication.php にエラーがあったので、必要無くなった)
|
261
|
+
(MiniBlogApplication.php にエラーがあったので、コードの提示は必要無くなった)
|
257
262
|
|
258
263
|
---
|
259
264
|
|
@@ -278,11 +283,11 @@
|
|
278
283
|
すべての写経のエラーを解決しても、フレームワークの内部とオブジェクト指向は理解できません
|
279
284
|
##### NetBeans IDE デバッグ機能 使って「フレームワークの内部」と「オブジェクト指向」を理解しましょう (ダウンロードした サンプルコード 使用)
|
280
285
|
|
281
|
-
>
|
286
|
+
>
|
282
|
-
|
283
|
-
NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
|
287
|
+
> NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
|
288
|
+
> 処理の流れ と 変数の値 が分かることで
|
284
|
-
「フレームワークの内部」と「オブジェクト指向」を理解するために使
|
289
|
+
> 「フレームワークの内部」と「オブジェクト指向」を理解するために使います
|
285
|
-
>
|
290
|
+
>
|
286
291
|
|
287
292
|
詳細は、**参考サイトのリンク** をご覧ください
|
288
293
|
|
@@ -311,7 +316,7 @@
|
|
311
316
|
|
312
317
|
|
313
318
|
Application の **空** の co**n**figure メソッド
|
314
|
-
エラーが無ければ MiniBlogApplication の **データベースへの接続設定** が Application に反映され
|
319
|
+
エラーが無ければ MiniBlogApplication の **データベースへの接続設定** が Application に反映されます
|
315
320
|
` protected function configure()` ← co**n**figure
|
316
321
|
` {`
|
317
322
|
` }`
|
24
微調整
answer
CHANGED
@@ -14,16 +14,13 @@
|
|
14
14
|
|
15
15
|
参考サイトの紹介です。
|
16
16
|
|
17
|
-
>
|
18
|
-
|
19
|
-
[パーフェクトPHP デバッグ (処理の流れ | ユーザ登録機能作成)](http://beginner001.html.xdomain.jp/debug-02-1.html)
|
17
|
+
> [パーフェクトPHP デバッグ (処理の流れ | ユーザ登録機能作成)](http://beginner001.html.xdomain.jp/debug-02-1.html)
|
20
18
|
[パーフェクトPHP デバッグ (チェックポイント)](http://beginner001.html.xdomain.jp/debug-01.html)
|
21
|
-
[パーフェクトPHP デバッグ (その他)](http://beginner001.html.xdomain.jp/debug-03.html) (具体的な 環境設定手順)
|
19
|
+
> [パーフェクトPHP デバッグ (その他)](http://beginner001.html.xdomain.jp/debug-03.html) (具体的な 環境設定手順)
|
22
|
-
[パーフェクトPHP デバッグ (**NetBeans デバッグ方法**)](http://beginner001.html.xdomain.jp/debug-04.html) (具体的な デバッグ例)
|
20
|
+
> [パーフェクトPHP デバッグ (**NetBeans デバッグ方法**)](http://beginner001.html.xdomain.jp/debug-04.html) (具体的な デバッグ例)
|
23
|
-
|
24
|
-
[パーフェクトPHP をデバッグしました (学習方法)](https://beginner001.hatenablog.com/entry/2018/12/27/100003)
|
25
|
-
[パーフェクトPHP をデバッグしました (やる気のある初心者)](https://beginner001.hatenablog.com/entry/2018/12/27/100004)
|
26
|
-
>
|
21
|
+
>
|
22
|
+
> [パーフェクトPHP をデバッグしました (学習方法)](https://beginner001.hatenablog.com/entry/2018/12/27/100003)
|
23
|
+
> [パーフェクトPHP をデバッグしました (やる気のある初心者)](https://beginner001.hatenablog.com/entry/2018/12/27/100004)
|
27
24
|
|
28
25
|
パーフェクトPHP をデバッグしました (学習方法) や
|
29
26
|
パーフェクトPHP をデバッグしました (やる気のある初心者) に
|
@@ -34,16 +31,13 @@
|
|
34
31
|
・XAMPP 5.6.31
|
35
32
|
・NetBeans 8.2
|
36
33
|
|
34
|
+
> **学習環境**なので XAMPP 7.x.x (PHP 7.x.x) にする必要はありません。
|
35
|
+
> XAMPP 7.x.x でも動作しますが、**Xdebug** の準備が必要です。
|
36
|
+
> [XAMPP 7.1.14 と NetBeans IDE 8.2 の不具合](http://beginner001.html.xdomain.jp/debug-03.html#PHP7)
|
37
|
-
>
|
37
|
+
>
|
38
|
-
|
39
|
-
**学習環境**なので XAMPP 7.x.x (PHP 7.x.x) にする必要はありません。
|
40
|
-
XAMPP 7.x.x でも動作しますが、**Xdebug** の準備が必要です。
|
41
|
-
[XAMPP 7.1.14 と NetBeans IDE 8.2 の不具合](http://beginner001.html.xdomain.jp/debug-03.html#PHP7)
|
42
|
-
|
43
|
-
サンプルコードは、フレームワークの **使い方** ではなく、
|
38
|
+
> サンプルコードは、フレームワークの **使い方** ではなく、
|
44
|
-
フレームワークとオブジェクト指向の **考え方** について書かれているので
|
39
|
+
> フレームワークとオブジェクト指向の **考え方** について書かれているので
|
45
40
|
**バージョンは、関係ありません。**
|
46
|
-
>
|
47
41
|
|
48
42
|
---
|
49
43
|
|
23
微調整
answer
CHANGED
@@ -14,15 +14,17 @@
|
|
14
14
|
|
15
15
|
参考サイトの紹介です。
|
16
16
|
|
17
|
+
>
|
18
|
+
|
17
19
|
[パーフェクトPHP デバッグ (処理の流れ | ユーザ登録機能作成)](http://beginner001.html.xdomain.jp/debug-02-1.html)
|
18
|
-
[パーフェクトPHP デバッグ (チェックポイント)](http://beginner001.html.xdomain.jp/debug-01.html)
|
20
|
+
[パーフェクトPHP デバッグ (チェックポイント)](http://beginner001.html.xdomain.jp/debug-01.html)
|
19
21
|
[パーフェクトPHP デバッグ (その他)](http://beginner001.html.xdomain.jp/debug-03.html) (具体的な 環境設定手順)
|
20
22
|
[パーフェクトPHP デバッグ (**NetBeans デバッグ方法**)](http://beginner001.html.xdomain.jp/debug-04.html) (具体的な デバッグ例)
|
21
|
-
|
23
|
+
|
22
24
|
[パーフェクトPHP をデバッグしました (学習方法)](https://beginner001.hatenablog.com/entry/2018/12/27/100003)
|
23
25
|
[パーフェクトPHP をデバッグしました (やる気のある初心者)](https://beginner001.hatenablog.com/entry/2018/12/27/100004)
|
26
|
+
>
|
24
27
|
|
25
|
-
上記リンクの
|
26
28
|
パーフェクトPHP をデバッグしました (学習方法) や
|
27
29
|
パーフェクトPHP をデバッグしました (やる気のある初心者) に
|
28
30
|
書いてありますが、**「写経」はおすすめしません。**
|
@@ -32,13 +34,16 @@
|
|
32
34
|
・XAMPP 5.6.31
|
33
35
|
・NetBeans 8.2
|
34
36
|
|
37
|
+
>
|
38
|
+
|
35
39
|
**学習環境**なので XAMPP 7.x.x (PHP 7.x.x) にする必要はありません。
|
36
40
|
XAMPP 7.x.x でも動作しますが、**Xdebug** の準備が必要です。
|
37
41
|
[XAMPP 7.1.14 と NetBeans IDE 8.2 の不具合](http://beginner001.html.xdomain.jp/debug-03.html#PHP7)
|
38
|
-
|
42
|
+
|
39
43
|
サンプルコードは、フレームワークの **使い方** ではなく、
|
40
44
|
フレームワークとオブジェクト指向の **考え方** について書かれているので
|
41
45
|
**バージョンは、関係ありません。**
|
46
|
+
>
|
42
47
|
|
43
48
|
---
|
44
49
|
|
22
微調整
answer
CHANGED
@@ -167,7 +167,7 @@
|
|
167
167
|
|
168
168
|
**【コードを調べる】**
|
169
169
|
|
170
|
-
"**new PDO**" を検索 検索ツール(Devas)
|
170
|
+
「**DB への接続** のスタートである」"**new PDO**" を検索 検索ツール(Devas)
|
171
171
|
|ファイル|メソッド|
|
172
172
|
|:--|:--|
|
173
173
|
|DbManager.php |public function **connect(**$name, $params)|
|
@@ -312,6 +312,7 @@
|
|
312
312
|
|
313
313
|
|
314
314
|
Application の **空** の co**n**figure メソッド
|
315
|
+
エラーが無ければ MiniBlogApplication の **データベースへの接続設定** が Application に反映される
|
315
316
|
` protected function configure()` ← co**n**figure
|
316
317
|
` {`
|
317
318
|
` }`
|
21
微調整
answer
CHANGED
@@ -287,12 +287,6 @@
|
|
287
287
|
|
288
288
|
詳細は、**参考サイトのリンク** をご覧ください
|
289
289
|
|
290
|
-
>
|
291
|
-
|
292
|
-
経験者「デバッグ環境を作ってください」
|
293
|
-
初心者「分かりました」 (... 作り方が分からない?) (... 作れなかった!)
|
294
|
-
>
|
295
|
-
|
296
290
|
---
|
297
291
|
|
298
292
|
【エラーの理由】
|
20
微調整
answer
CHANGED
@@ -88,20 +88,22 @@
|
|
88
88
|
NetBeans **ブレークポイント** (3ヶ所設定 *) と **処理順序**
|
89
89
|
|PHP|行|内容|次のアクション|
|
90
90
|
|:--|--:|:--|:--|
|
91
|
-
|Application|
|
91
|
+
|Application|184*|$controller("status"), $action("index")|続行 (F5)|
|
92
|
-
|Session|
|
92
|
+
|Session|103*|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
|
93
|
-
|Session|49|$default true に変更 (**上記** 仕様)|続行 (F5)|
|
93
|
+
|Session|49 |$default true に変更 (**上記** 仕様)|続行 (F5)|
|
94
|
-
|DbRepository|
|
94
|
+
|DbRepository|41*|$this->con false に変更|続行 (F5)|
|
95
95
|
|
96
96
|
**注 Session 49 は、ブレークポイントではありません**
|
97
97
|
|
98
|
+
>
|
99
|
+
|
98
100
|
デバッグを実行すると、最後に **エラーが再現** されます
|
99
|
-
正しい
|
101
|
+
「正しい」**データベースへの接続設定 (PDO インスタンス)** の **$this->con** を「壊しています」
|
100
|
-
(DbRepository
|
102
|
+
(DbRepository 41* **$this->con** false に変更)
|
101
|
-
|
103
|
+
|
102
104
|
エラーの原因は、**DB への接続ミス**です
|
105
|
+
>
|
103
106
|
|
104
|
-
|
105
107
|
Application.php
|
106
108
|
```PHP
|
107
109
|
...
|
@@ -116,7 +118,7 @@
|
|
116
118
|
181 $controller = $params['controller'];
|
117
119
|
182 $action = $params['action'];
|
118
120
|
183
|
119
|
-
184
|
121
|
+
184* $this->runAction($controller, $action, $params); /* ブレークポイント */
|
120
122
|
185 } catch (HttpNotFoundException $e) {
|
121
123
|
186 $this->render404Page($e);
|
122
124
|
187 } catch (UnauthorizedActionException $e) {
|
@@ -142,7 +144,7 @@
|
|
142
144
|
...
|
143
145
|
101 public function isAuthenticated()
|
144
146
|
102 {
|
145
|
-
103
|
147
|
+
103* return $this->get('_authenticated', false); /* ブレークポイント */
|
146
148
|
104 }
|
147
149
|
...
|
148
150
|
```
|
@@ -153,7 +155,7 @@
|
|
153
155
|
...
|
154
156
|
39 public function execute($sql, $params = array())
|
155
157
|
40 {
|
156
|
-
41
|
158
|
+
41* $stmt = $this->con->prepare($sql); /* ブレークポイント $this->con false に変更 */
|
157
159
|
42 $stmt->execute($params);
|
158
160
|
43
|
159
161
|
44 return $stmt;
|
@@ -251,11 +253,12 @@
|
|
251
253
|
|
252
254
|
MiniBlogApplication.php に**エラーが無い場合**
|
253
255
|
DbManager.php と Application.php のコード提示をしてもらう予定
|
256
|
+
|
254
257
|
(MiniBlogApplication.php にエラーがあったので、必要無くなった)
|
255
258
|
|
256
259
|
---
|
257
260
|
|
258
|
-
**【修正箇所が分かる】**
|
261
|
+
**【修正箇所が分かる & NetBeans IDE デバッグ機能】**
|
259
262
|
|
260
263
|
差分ツール (WinMerge) で
|
261
264
|
サンプルコード の MiniBlogApplication.php と orangefarmer さんの MiniBlogApplication.php を比較する
|
@@ -275,8 +278,21 @@
|
|
275
278
|
|
276
279
|
すべての写経のエラーを解決しても、フレームワークの内部とオブジェクト指向は理解できません
|
277
280
|
##### NetBeans IDE デバッグ機能 使って「フレームワークの内部」と「オブジェクト指向」を理解しましょう (ダウンロードした サンプルコード 使用)
|
281
|
+
|
282
|
+
>
|
283
|
+
|
284
|
+
NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
|
285
|
+
「フレームワークの内部」と「オブジェクト指向」を理解するために使用します
|
286
|
+
>
|
287
|
+
|
278
288
|
詳細は、**参考サイトのリンク** をご覧ください
|
279
289
|
|
290
|
+
>
|
291
|
+
|
292
|
+
経験者「デバッグ環境を作ってください」
|
293
|
+
初心者「分かりました」 (... 作り方が分からない?) (... 作れなかった!)
|
294
|
+
>
|
295
|
+
|
280
296
|
---
|
281
297
|
|
282
298
|
【エラーの理由】
|
19
微調整
answer
CHANGED
@@ -163,7 +163,7 @@
|
|
163
163
|
|
164
164
|
---
|
165
165
|
|
166
|
-
**【
|
166
|
+
**【コードを調べる】**
|
167
167
|
|
168
168
|
"**new PDO**" を検索 検索ツール(Devas)
|
169
169
|
|ファイル|メソッド|
|
18
微調整
answer
CHANGED
@@ -284,14 +284,14 @@
|
|
284
284
|
子クラスのメソッド名 (cofigure) が親クラスのメソッド名 (co**n**figure) と違うために
|
285
285
|
**オーバライド**ができず、**データベースへの接続設定** が**未定義** のためです。
|
286
286
|
|
287
|
-
`class MiniBlogApplication extends Application`
|
287
|
+
`class MiniBlogApplication extends Application` ← **extends** (継承)
|
288
288
|
`{`
|
289
289
|
` ... 省略`
|
290
290
|
`}`
|
291
291
|
|
292
292
|
|
293
293
|
MiniBlogApplication の cofigure メソッド
|
294
|
-
` protected function cofigure()`
|
294
|
+
` protected function cofigure()` ← **オーバライドできない** (co**n**figure でないため)
|
295
295
|
` {` ↓ 以下 **データベースへの接続設定**
|
296
296
|
` $this->db_manager->connect('master', array(`
|
297
297
|
` 'dsn' => 'mysql:dbname=mini_blog;host=localhost;charset=utf8',`
|
@@ -302,7 +302,7 @@
|
|
302
302
|
|
303
303
|
|
304
304
|
Application の **空** の co**n**figure メソッド
|
305
|
-
` protected function configure()`
|
305
|
+
` protected function configure()` ← co**n**figure
|
306
306
|
` {`
|
307
307
|
` }`
|
308
308
|
|
@@ -312,5 +312,5 @@
|
|
312
312
|
` {`
|
313
313
|
` $this->setDebugMode($debug);`
|
314
314
|
` $this->initialize();`
|
315
|
-
` $this->configure();`
|
315
|
+
` $this->configure();` ← **空** のメソッドのまま co**n**figure (データベースへの接続設定 が **未定義**)
|
316
316
|
` }`
|
17
微調整
answer
CHANGED
@@ -250,7 +250,7 @@
|
|
250
250
|
MiniBlogApplication.php のみ
|
251
251
|
|
252
252
|
MiniBlogApplication.php に**エラーが無い場合**
|
253
|
-
DbManager.php と Application.php のコード提示してもらう予定
|
253
|
+
DbManager.php と Application.php のコード提示をしてもらう予定
|
254
254
|
(MiniBlogApplication.php にエラーがあったので、必要無くなった)
|
255
255
|
|
256
256
|
---
|
16
微調整
answer
CHANGED
@@ -40,21 +40,6 @@
|
|
40
40
|
フレームワークとオブジェクト指向の **考え方** について書かれているので
|
41
41
|
**バージョンは、関係ありません。**
|
42
42
|
|
43
|
-
|
44
|
-
**【Windows MAMP】**
|
45
|
-
- XAMPP でも同じことができます
|
46
|
-
|
47
|
-
**【Macintosh MAMP】**
|
48
|
-
- [ついにデバッグの環境が整った](https://blogs.yahoo.co.jp/amegrapsp/41541779.html)
|
49
|
-
- [NetBeans IDE のおかげで理解が飛躍的に](https://blogs.yahoo.co.jp/amegrapsp/41551211.html)
|
50
|
-
- [ようやく解決の糸口が見つかった](https://blogs.yahoo.co.jp/amegrapsp/41541352.html)
|
51
|
-
|
52
|
-
上のサイトの管理人は、**プログラム初心者** & **NetBeans IDE デバッグ機能 初めて**
|
53
|
-
で、「写経」のバグを解決した優秀な方です。
|
54
|
-
|
55
|
-
Macintosh MAMP の **Xdebug** についても書かれています。
|
56
|
-
「多分」問合せもできると思います。
|
57
|
-
|
58
43
|
---
|
59
44
|
|
60
45
|
####NetBeans デバッグ方法
|
15
MAMP について 追加
answer
CHANGED
@@ -33,13 +33,28 @@
|
|
33
33
|
・NetBeans 8.2
|
34
34
|
|
35
35
|
**学習環境**なので XAMPP 7.x.x (PHP 7.x.x) にする必要はありません。
|
36
|
-
XAMPP 7.x.x でも動作しますが、Xdebug の準備が必要です。
|
36
|
+
XAMPP 7.x.x でも動作しますが、**Xdebug** の準備が必要です。
|
37
37
|
[XAMPP 7.1.14 と NetBeans IDE 8.2 の不具合](http://beginner001.html.xdomain.jp/debug-03.html#PHP7)
|
38
38
|
|
39
39
|
サンプルコードは、フレームワークの **使い方** ではなく、
|
40
40
|
フレームワークとオブジェクト指向の **考え方** について書かれているので
|
41
41
|
**バージョンは、関係ありません。**
|
42
42
|
|
43
|
+
|
44
|
+
**【Windows MAMP】**
|
45
|
+
- XAMPP でも同じことができます
|
46
|
+
|
47
|
+
**【Macintosh MAMP】**
|
48
|
+
- [ついにデバッグの環境が整った](https://blogs.yahoo.co.jp/amegrapsp/41541779.html)
|
49
|
+
- [NetBeans IDE のおかげで理解が飛躍的に](https://blogs.yahoo.co.jp/amegrapsp/41551211.html)
|
50
|
+
- [ようやく解決の糸口が見つかった](https://blogs.yahoo.co.jp/amegrapsp/41541352.html)
|
51
|
+
|
52
|
+
上のサイトの管理人は、**プログラム初心者** & **NetBeans IDE デバッグ機能 初めて**
|
53
|
+
で、「写経」のバグを解決した優秀な方です。
|
54
|
+
|
55
|
+
Macintosh MAMP の **Xdebug** についても書かれています。
|
56
|
+
「多分」問合せもできると思います。
|
57
|
+
|
43
58
|
---
|
44
59
|
|
45
60
|
####NetBeans デバッグ方法
|
14
微調整
answer
CHANGED
@@ -55,11 +55,11 @@
|
|
55
55
|
仕様 (ホームページ表示とログイン)
|
56
56
|
- サンプルコード の仕様
|
57
57
|
- ホームページは、**ログイン後**に表示されます
|
58
|
-
- ホームページ (#5 Application->runAction('**status**', '**index**', Array))
|
58
|
+
- ホームページ (エラー ログ #5 Application->runAction('**status**', '**index**', Array))
|
59
59
|
|
60
60
|
- orangefarmer さん の仕様
|
61
|
-
- **未ログイン**で、ホームページ表示が実行されます (今回は **DB への接続ミス**
|
61
|
+
- **未ログイン**で、ホームページ表示が実行されます (今回は **DB への接続ミス**)
|
62
|
-
- #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**) 本来は、NULLの部分に ログインユーザ ($user['id']) の値がセットされます
|
62
|
+
- エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**) 本来は、NULLの部分に ログインユーザ ($user['id']) の値がセットされます
|
63
63
|
- ログインする 仕様の場合、ホームページ表示前に userテーブル使用で **DB への接続ミス** が発生します
|
64
64
|
|
65
65
|
- デバッグ対策 **下記** NetBeans ブレークポイント Session 49 参照
|
@@ -70,6 +70,8 @@
|
|
70
70
|
|
71
71
|
|
72
72
|
エラー ログ
|
73
|
+
- #5 Application->runAction('**status**', '**index**', Array))
|
74
|
+
- #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
|
73
75
|
```
|
74
76
|
#6 C:\xampp\htdocs\php-blog.localhost\web\index_dev.php(7): Application->run()
|
75
77
|
#5 C:\xampp\htdocs\php-blog.localhost\core\Application.php(103): Application->runAction('status', 'index', Array)
|
@@ -94,7 +96,8 @@
|
|
94
96
|
**注 Session 49 は、ブレークポイントではありません**
|
95
97
|
|
96
98
|
デバッグを実行すると、最後に **エラーが再現** されます
|
97
|
-
正しい **データベースへの接続設定 (PDO インスタンス)** $this->con を壊しています
|
99
|
+
正しい **データベースへの接続設定 (PDO インスタンス)** の $this->con を「壊しています」
|
100
|
+
(DbRepository *41 **$this->con** false)
|
98
101
|
|
99
102
|
エラーの原因は、**DB への接続ミス**です
|
100
103
|
|
@@ -266,8 +269,9 @@
|
|
266
269
|
|
267
270
|
|
268
271
|
今回のエラーを解決しても、別の不具合が出ます
|
269
|
-
ホームページのデータ件数 ゼロ
|
272
|
+
・ホームページのデータ件数 ゼロ
|
270
|
-
|
273
|
+
・エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
|
274
|
+
・ログイン機能のデバッグ (or 実装)
|
271
275
|
|
272
276
|
すべての写経のエラーを解決しても、フレームワークの内部とオブジェクト指向は理解できません
|
273
277
|
##### NetBeans IDE デバッグ機能 使って「フレームワークの内部」と「オブジェクト指向」を理解しましょう (ダウンロードした サンプルコード 使用)
|
@@ -308,5 +312,5 @@
|
|
308
312
|
` {`
|
309
313
|
` $this->setDebugMode($debug);`
|
310
314
|
` $this->initialize();`
|
311
|
-
` $this->configure();` ← **空** のメソッド co**n**figure (データベースへの接続設定 が **未定義**)
|
315
|
+
` $this->configure();` ← **空** のメソッドのまま co**n**figure (データベースへの接続設定 が **未定義**)
|
312
316
|
` }`
|
13
微調整
answer
CHANGED
@@ -46,7 +46,7 @@
|
|
46
46
|
|
47
47
|
**【エラーの原因】**
|
48
48
|
|
49
|
-
**NetBeans IDE デバッグ機能** を使った デバッグ
|
49
|
+
**NetBeans IDE デバッグ機能** を使った デバッグ です。
|
50
50
|
|
51
51
|
注意点
|
52
52
|
- 公式サイト サンプルコード(mini-blog.zip) を使用 (不具合 2ヶ所修正)
|
@@ -265,22 +265,18 @@
|
|
265
265
|
誤 protected function cofigure()
|
266
266
|
|
267
267
|
|
268
|
-
エラーを解決しても、
|
268
|
+
今回のエラーを解決しても、別の不具合が出ます
|
269
|
-
ホームページのデータ件数
|
269
|
+
ホームページのデータ件数 ゼロ
|
270
|
-
|
270
|
+
#2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
|
271
271
|
|
272
|
-
写経のエラーを解決しても、フレームワークの内部とオブジェクト指向は理解できません
|
272
|
+
すべての写経のエラーを解決しても、フレームワークの内部とオブジェクト指向は理解できません
|
273
|
-
**ダウンロードした サンプルコード** に変更します
|
274
|
-
|
275
|
-
##### NetBeans IDE デバッグ機能 使って「フレームワークの内部」と「オブジェクト指向」を理解しま
|
273
|
+
##### NetBeans IDE デバッグ機能 使って「フレームワークの内部」と「オブジェクト指向」を理解しましょう (ダウンロードした サンプルコード 使用)
|
276
274
|
詳細は、**参考サイトのリンク** をご覧ください
|
277
275
|
|
278
276
|
---
|
279
277
|
|
280
278
|
【エラーの理由】
|
281
279
|
|
282
|
-
**DB への接続ミス** になる理由です。
|
283
|
-
|
284
280
|
子クラスのメソッド名 (cofigure) が親クラスのメソッド名 (co**n**figure) と違うために
|
285
281
|
**オーバライド**ができず、**データベースへの接続設定** が**未定義** のためです。
|
286
282
|
|
12
サンプルコードの使用
answer
CHANGED
@@ -60,9 +60,9 @@
|
|
60
60
|
- orangefarmer さん の仕様
|
61
61
|
- **未ログイン**で、ホームページ表示が実行されます (今回は **DB への接続ミス** のエラー)
|
62
62
|
- #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**) 本来は、NULLの部分に ログインユーザ ($user['id']) の値がセットされます
|
63
|
-
- ログインする仕様の場合、ホームページ表示前に userテーブル使用で **DB への接続ミス** が発生します
|
63
|
+
- ログインする 仕様の場合、ホームページ表示前に userテーブル使用で **DB への接続ミス** が発生します
|
64
64
|
|
65
|
-
- 対策 **下記** NetBeans ブレークポイント Session
|
65
|
+
- デバッグ対策 **下記** NetBeans ブレークポイント Session 49 参照
|
66
66
|
|
67
67
|
参考
|
68
68
|
- [処理の流れ | ホームページと投稿](http://beginner001.html.xdomain.jp/debug-02-2.html)
|
@@ -83,18 +83,18 @@
|
|
83
83
|
```
|
84
84
|
|
85
85
|
|
86
|
-
NetBeans **ブレークポイント** (3ヶ所設定) と **処理順序**
|
86
|
+
NetBeans **ブレークポイント** (3ヶ所設定 *) と **処理順序**
|
87
|
-
|
|
87
|
+
|PHP|行|内容|次のアクション|
|
88
88
|
|:--|--:|:--|:--|
|
89
|
-
|Application
|
89
|
+
|Application|*184|$controller("status"), $action("index")|続行 (F5)|
|
90
|
-
|Session
|
90
|
+
|Session|*103|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
|
91
|
-
|Session
|
91
|
+
|Session|49|$default true に変更 (**上記** 仕様)|続行 (F5)|
|
92
|
-
|DbRepository
|
92
|
+
|DbRepository|*41|$this->con false に変更|続行 (F5)|
|
93
93
|
|
94
|
-
**注 Session
|
94
|
+
**注 Session 49 は、ブレークポイントではありません**
|
95
95
|
|
96
96
|
デバッグを実行すると、最後に **エラーが再現** されます
|
97
|
-
|
97
|
+
正しい **データベースへの接続設定 (PDO インスタンス)** $this->con を壊しています
|
98
98
|
|
99
99
|
エラーの原因は、**DB への接続ミス**です
|
100
100
|
|
@@ -195,7 +195,7 @@
|
|
195
195
|
26 'options' => array(),
|
196
196
|
27 ), $params);
|
197
197
|
28
|
198
|
-
29 $con = new PDO(
|
198
|
+
29 $con = new PDO( /* "new PDO" を検索 */
|
199
199
|
30 $params['dsn'],
|
200
200
|
31 $params['user'],
|
201
201
|
32 $params['password'],
|
@@ -247,7 +247,7 @@
|
|
247
247
|
MiniBlogApplication.php のみ
|
248
248
|
|
249
249
|
MiniBlogApplication.php に**エラーが無い場合**
|
250
|
-
DbManager.php と Application.php のコード提示してもらう予定
|
250
|
+
DbManager.php と Application.php のコード提示してもらう予定
|
251
251
|
(MiniBlogApplication.php にエラーがあったので、必要無くなった)
|
252
252
|
|
253
253
|
---
|
@@ -264,6 +264,17 @@
|
|
264
264
|
正 protected function co**n**figure()
|
265
265
|
誤 protected function cofigure()
|
266
266
|
|
267
|
+
|
268
|
+
エラーを解決しても、次の不具合が出ます
|
269
|
+
ホームページのデータ件数は、ゼロです
|
270
|
+
- #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
|
271
|
+
|
272
|
+
写経のエラーを解決しても、フレームワークの内部とオブジェクト指向は理解できません
|
273
|
+
**ダウンロードした サンプルコード** に変更します
|
274
|
+
|
275
|
+
##### NetBeans IDE デバッグ機能 使って「フレームワークの内部」と「オブジェクト指向」を理解します
|
276
|
+
詳細は、**参考サイトのリンク** をご覧ください
|
277
|
+
|
267
278
|
---
|
268
279
|
|
269
280
|
【エラーの理由】
|
11
微調整
answer
CHANGED
@@ -96,7 +96,7 @@
|
|
96
96
|
デバッグを実行すると、最後に **エラーが再現** されます
|
97
97
|
(正しい **データベースへの接続設定 (PDO インスタンス)** $this->con を壊しています)
|
98
98
|
|
99
|
-
原因は、**DB への接続ミス**です
|
99
|
+
エラーの原因は、**DB への接続ミス**です
|
100
100
|
|
101
101
|
|
102
102
|
Application.php
|
10
微調整
answer
CHANGED
@@ -83,13 +83,13 @@
|
|
83
83
|
```
|
84
84
|
|
85
85
|
|
86
|
-
NetBeans **ブレークポイント** (3ヶ所設定
|
86
|
+
NetBeans **ブレークポイント** (3ヶ所設定) と **処理順序**
|
87
87
|
|ファイル |行No|内容|次のアクション|
|
88
88
|
|:--|--:|:--|:--|
|
89
|
-
|Application.php|
|
89
|
+
|Application.php|184|$controller("status"), $action("index")|続行 (F5)|
|
90
|
-
|Session.php|
|
90
|
+
|Session.php|103|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
|
91
91
|
|Session.php|49|$default true に変更 (**上記** 仕様 対策)|続行 (F5)|
|
92
|
-
|DbRepository.php|
|
92
|
+
|DbRepository.php|41|$this->con false に変更|続行 (F5)|
|
93
93
|
|
94
94
|
**注 Session.php 49 は、ブレークポイントではありません**
|
95
95
|
|
9
微調整
answer
CHANGED
@@ -53,14 +53,14 @@
|
|
53
53
|
- デバッグ中の変数の**変更**は、**メモリ上**です (ファイルは元のまま)
|
54
54
|
|
55
55
|
仕様 (ホームページ表示とログイン)
|
56
|
-
- サンプルコード 仕様
|
56
|
+
- サンプルコード の仕様
|
57
57
|
- ホームページは、**ログイン後**に表示されます
|
58
58
|
- ホームページ (#5 Application->runAction('**status**', '**index**', Array))
|
59
59
|
|
60
|
-
- orangefarmer さん 仕様
|
60
|
+
- orangefarmer さん の仕様
|
61
|
-
- **未ログイン**で、ホームページ表示が実行されます (今回はエラー)
|
61
|
+
- **未ログイン**で、ホームページ表示が実行されます (今回は **DB への接続ミス** のエラー)
|
62
|
-
- #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
|
62
|
+
- #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**) 本来は、NULLの部分に ログインユーザ ($user['id']) の値がセットされます
|
63
|
-
- ログインする仕様
|
63
|
+
- ログインする仕様の場合、ホームページ表示前に userテーブル使用で **DB への接続ミス** が発生します
|
64
64
|
|
65
65
|
- 対策 **下記** NetBeans ブレークポイント Session.php 49 参照
|
66
66
|
|
@@ -83,17 +83,19 @@
|
|
83
83
|
```
|
84
84
|
|
85
85
|
|
86
|
-
NetBeans **ブレークポイント** (3ヶ所設定) と **処理順序**
|
86
|
+
NetBeans **ブレークポイント** (3ヶ所設定 *) と **処理順序**
|
87
87
|
|ファイル |行No|内容|次のアクション|
|
88
88
|
|:--|--:|:--|:--|
|
89
|
-
|Application.php|184|$controller("status"), $action("index")|続行 (F5)|
|
89
|
+
|Application.php|*184|$controller("status"), $action("index")|続行 (F5)|
|
90
|
-
|Session.php|103|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
|
90
|
+
|Session.php|*103|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
|
91
91
|
|Session.php|49|$default true に変更 (**上記** 仕様 対策)|続行 (F5)|
|
92
|
-
|DbRepository.php|41|$this->con false に変更|続行 (F5)|
|
92
|
+
|DbRepository.php|*41|$this->con false に変更|続行 (F5)|
|
93
93
|
|
94
94
|
**注 Session.php 49 は、ブレークポイントではありません**
|
95
95
|
|
96
96
|
デバッグを実行すると、最後に **エラーが再現** されます
|
97
|
+
(正しい **データベースへの接続設定 (PDO インスタンス)** $this->con を壊しています)
|
98
|
+
|
97
99
|
原因は、**DB への接続ミス**です
|
98
100
|
|
99
101
|
|
@@ -111,7 +113,7 @@
|
|
111
113
|
181 $controller = $params['controller'];
|
112
114
|
182 $action = $params['action'];
|
113
115
|
183
|
114
|
-
184 $this->runAction($controller, $action, $params);
|
116
|
+
184 $this->runAction($controller, $action, $params); /* ブレークポイント */
|
115
117
|
185 } catch (HttpNotFoundException $e) {
|
116
118
|
186 $this->render404Page($e);
|
117
119
|
187 } catch (UnauthorizedActionException $e) {
|
@@ -132,12 +134,12 @@
|
|
132
134
|
46 return $_SESSION[$name];
|
133
135
|
47 }
|
134
136
|
48
|
135
|
-
49 return $default;
|
137
|
+
49 return $default; /* $default true に変更 */
|
136
138
|
50 }
|
137
139
|
...
|
138
140
|
101 public function isAuthenticated()
|
139
141
|
102 {
|
140
|
-
103 return $this->get('_authenticated', false);
|
142
|
+
103 return $this->get('_authenticated', false); /* ブレークポイント */
|
141
143
|
104 }
|
142
144
|
...
|
143
145
|
```
|
@@ -148,7 +150,7 @@
|
|
148
150
|
...
|
149
151
|
39 public function execute($sql, $params = array())
|
150
152
|
40 {
|
151
|
-
41 $stmt = $this->con->prepare($sql);
|
153
|
+
41 $stmt = $this->con->prepare($sql); /* ブレークポイント $this->con false に変更 */
|
152
154
|
42 $stmt->execute($params);
|
153
155
|
43
|
154
156
|
44 return $stmt;
|
@@ -246,7 +248,7 @@
|
|
246
248
|
|
247
249
|
MiniBlogApplication.php に**エラーが無い場合**
|
248
250
|
DbManager.php と Application.php のコード提示してもらう予定です
|
249
|
-
(必要無くなった)
|
251
|
+
(MiniBlogApplication.php にエラーがあったので、必要無くなった)
|
250
252
|
|
251
253
|
---
|
252
254
|
|
8
調整
answer
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
###回答
|
1
|
+
###『回答』『参考サイトの紹介』『NetBeans デバッグ方法』
|
2
2
|
|
3
3
|
回答です。
|
4
4
|
|
@@ -14,9 +14,6 @@
|
|
14
14
|
|
15
15
|
参考サイトの紹介です。
|
16
16
|
|
17
|
-
直接の回答ではありません。
|
18
|
-
(nullbotさんの好意を無駄にしたくないので...)
|
19
|
-
|
20
17
|
[パーフェクトPHP デバッグ (処理の流れ | ユーザ登録機能作成)](http://beginner001.html.xdomain.jp/debug-02-1.html)
|
21
18
|
[パーフェクトPHP デバッグ (チェックポイント)](http://beginner001.html.xdomain.jp/debug-01.html)
|
22
19
|
[パーフェクトPHP デバッグ (その他)](http://beginner001.html.xdomain.jp/debug-03.html) (具体的な 環境設定手順)
|
@@ -30,32 +27,42 @@
|
|
30
27
|
パーフェクトPHP をデバッグしました (やる気のある初心者) に
|
31
28
|
書いてありますが、**「写経」はおすすめしません。**
|
32
29
|
|
33
|
-
|
30
|
+
|
34
|
-
|
31
|
+
**【パーフェクトPHP デバッグ 動作環境】**
|
32
|
+
・XAMPP 5.6.31
|
33
|
+
・NetBeans 8.2
|
35
34
|
|
35
|
+
**学習環境**なので XAMPP 7.x.x (PHP 7.x.x) にする必要はありません。
|
36
|
-
|
36
|
+
XAMPP 7.x.x でも動作しますが、Xdebug の準備が必要です。
|
37
|
-
[
|
37
|
+
[XAMPP 7.1.14 と NetBeans IDE 8.2 の不具合](http://beginner001.html.xdomain.jp/debug-03.html#PHP7)
|
38
|
-
「フォルダ単位に」すべてのソースの違いを一括で調べることもできます。
|
39
|
-
(あくまで、「写経」の入力ミス チェックです)
|
40
38
|
|
39
|
+
サンプルコードは、フレームワークの **使い方** ではなく、
|
40
|
+
フレームワークとオブジェクト指向の **考え方** について書かれているので
|
41
|
-
|
41
|
+
**バージョンは、関係ありません。**
|
42
|
-
期待しています。
|
43
42
|
|
44
43
|
---
|
44
|
+
|
45
45
|
####NetBeans デバッグ方法
|
46
46
|
|
47
47
|
**【エラーの原因】**
|
48
48
|
|
49
|
-
**NetBeans IDE デバッグ機能** を使った
|
49
|
+
**NetBeans IDE デバッグ機能** を使った デバッグ方法 です。
|
50
50
|
|
51
51
|
注意点
|
52
52
|
- 公式サイト サンプルコード(mini-blog.zip) を使用 (不具合 2ヶ所修正)
|
53
53
|
- デバッグ中の変数の**変更**は、**メモリ上**です (ファイルは元のまま)
|
54
54
|
|
55
55
|
仕様 (ホームページ表示とログイン)
|
56
|
+
- サンプルコード 仕様
|
57
|
+
- ホームページは、**ログイン後**に表示されます
|
56
|
-
|
58
|
+
- ホームページ (#5 Application->runAction('**status**', '**index**', Array))
|
59
|
+
|
60
|
+
- orangefarmer さん 仕様
|
61
|
+
- **未ログイン**で、ホームページ表示が実行されます (今回はエラー)
|
57
|
-
|
62
|
+
- #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**) (本来は $user['id'] の値がセットされます)
|
63
|
+
- ログインする仕様だと、表示前に userテーブル使用で **DB への接続ミス** が発生します
|
64
|
+
|
58
|
-
|
65
|
+
- 対策 **下記** NetBeans ブレークポイント Session.php 49 参照
|
59
66
|
|
60
67
|
参考
|
61
68
|
- [処理の流れ | ホームページと投稿](http://beginner001.html.xdomain.jp/debug-02-2.html)
|
@@ -86,8 +93,8 @@
|
|
86
93
|
|
87
94
|
**注 Session.php 49 は、ブレークポイントではありません**
|
88
95
|
|
89
|
-
実行
|
96
|
+
デバッグを実行すると、最後に **エラーが再現** されます
|
90
|
-
原因は、**DB への接続ミス**
|
97
|
+
原因は、**DB への接続ミス**です
|
91
98
|
|
92
99
|
|
93
100
|
Application.php
|
@@ -238,7 +245,8 @@
|
|
238
245
|
MiniBlogApplication.php のみ
|
239
246
|
|
240
247
|
MiniBlogApplication.php に**エラーが無い場合**
|
241
|
-
DbManager.php と Application.php のコード提示してもらう予定
|
248
|
+
DbManager.php と Application.php のコード提示してもらう予定です
|
249
|
+
(必要無くなった)
|
242
250
|
|
243
251
|
---
|
244
252
|
|
@@ -260,6 +268,9 @@
|
|
260
268
|
|
261
269
|
**DB への接続ミス** になる理由です。
|
262
270
|
|
271
|
+
子クラスのメソッド名 (cofigure) が親クラスのメソッド名 (co**n**figure) と違うために
|
272
|
+
**オーバライド**ができず、**データベースへの接続設定** が**未定義** のためです。
|
273
|
+
|
263
274
|
`class MiniBlogApplication extends Application` ← **extends** (継承)
|
264
275
|
`{`
|
265
276
|
` ... 省略`
|
7
微調整
answer
CHANGED
@@ -27,8 +27,8 @@
|
|
27
27
|
|
28
28
|
上記リンクの
|
29
29
|
パーフェクトPHP をデバッグしました (学習方法) や
|
30
|
-
パーフェクトPHP をデバッグしました (やる気のある初心者)
|
30
|
+
パーフェクトPHP をデバッグしました (やる気のある初心者) に
|
31
|
-
|
31
|
+
書いてありますが、**「写経」はおすすめしません。**
|
32
32
|
|
33
33
|
サンプルコードを理解すれば、**IDE デバッグ機能**を使って、エラーは解決できます。
|
34
34
|
当面は、サンプルコードの理解を優先してください。
|
@@ -54,7 +54,7 @@
|
|
54
54
|
|
55
55
|
仕様 (ホームページ表示とログイン)
|
56
56
|
- サンプルコード: ホームページ(#5 Application->runAction('status', 'index', Array))は、ログイン後に表示されます
|
57
|
-
- orangefarmer さん: 未ログイン(#2 StatusRepository->fetchAllPersonalArchivesByUserId(NULL))で実行され
|
57
|
+
- orangefarmer さん: 未ログイン(#2 StatusRepository->fetchAllPersonalArchivesByUserId(NULL))で、ホームページ表示が実行されます
|
58
58
|
- 対策 **下記** NetBeans ブレークポイント Session.php 49 参照
|
59
59
|
|
60
60
|
参考
|
@@ -76,13 +76,13 @@
|
|
76
76
|
```
|
77
77
|
|
78
78
|
|
79
|
-
NetBeans ブレークポイント
|
79
|
+
NetBeans **ブレークポイント** (3ヶ所設定) と **処理順序**
|
80
|
-
|ファイル |行
|
80
|
+
|ファイル |行No|内容|次のアクション|
|
81
81
|
|:--|--:|:--|:--|
|
82
|
-
|Application.php|184|$controller("status"), $action("index")
|
82
|
+
|Application.php|184|$controller("status"), $action("index")|続行 (F5)|
|
83
83
|
|Session.php|103|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
|
84
84
|
|Session.php|49|$default true に変更 (**上記** 仕様 対策)|続行 (F5)|
|
85
|
-
|DbRepository.php|41|$this->con false に変更
|
85
|
+
|DbRepository.php|41|$this->con false に変更|続行 (F5)|
|
86
86
|
|
87
87
|
**注 Session.php 49 は、ブレークポイントではありません**
|
88
88
|
|
@@ -266,14 +266,18 @@
|
|
266
266
|
`}`
|
267
267
|
|
268
268
|
|
269
|
-
MiniBlogApplication のメソッド
|
269
|
+
MiniBlogApplication の cofigure メソッド
|
270
270
|
` protected function cofigure()` ← **オーバライドできない** (co**n**figure でないため)
|
271
|
-
` {`
|
272
|
-
`
|
271
|
+
` {` ↓ 以下 **データベースへの接続設定**
|
272
|
+
` $this->db_manager->connect('master', array(`
|
273
|
+
` 'dsn' => 'mysql:dbname=mini_blog;host=localhost;charset=utf8',`
|
274
|
+
` 'user' => 'root',`
|
275
|
+
` 'password' => '',`
|
276
|
+
` ));`
|
273
277
|
` }`
|
274
278
|
|
275
279
|
|
276
|
-
Application の**空**のメソッド
|
280
|
+
Application の **空** の co**n**figure メソッド
|
277
281
|
` protected function configure()` ← co**n**figure
|
278
282
|
` {`
|
279
283
|
` }`
|
@@ -282,6 +286,7 @@
|
|
282
286
|
Application のコンストラクタ
|
283
287
|
` public function __construct($debug = false)`
|
284
288
|
` {`
|
289
|
+
` $this->setDebugMode($debug);`
|
285
|
-
`
|
290
|
+
` $this->initialize();`
|
286
|
-
` $this->configure();` ← **空**のメソッド co**n**figure (データベースへの接続設定 が**未定義**)
|
291
|
+
` $this->configure();` ← **空** のメソッド co**n**figure (データベースへの接続設定 が **未定義**)
|
287
292
|
` }`
|
6
微調整
answer
CHANGED
@@ -76,8 +76,8 @@
|
|
76
76
|
```
|
77
77
|
|
78
78
|
|
79
|
-
NetBeans ブレークポイント (**3ヶ所**設定)
|
79
|
+
NetBeans ブレークポイント (**3ヶ所**設定) と 処理順序
|
80
|
-
|ファイル|行|内容|次のアクション|
|
80
|
+
|ファイル |行番号|内容|次のアクション|
|
81
81
|
|:--|--:|:--|:--|
|
82
82
|
|Application.php|184|$controller("status"), $action("index") 確認|続行 (F5)|
|
83
83
|
|Session.php|103|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
|
@@ -233,7 +233,7 @@
|
|
233
233
|
```
|
234
234
|
|
235
235
|
|
236
|
-
**上記 3ファイル の
|
236
|
+
**上記 3ファイル の メソッド を調べる**
|
237
237
|
上記 3ファイルのうち、orangefarmer さんから コード提示されているのは、
|
238
238
|
MiniBlogApplication.php のみ
|
239
239
|
|
5
エラーの理由 追加
answer
CHANGED
@@ -17,20 +17,22 @@
|
|
17
17
|
直接の回答ではありません。
|
18
18
|
(nullbotさんの好意を無駄にしたくないので...)
|
19
19
|
|
20
|
-
|
20
|
+
[パーフェクトPHP デバッグ (処理の流れ | ユーザ登録機能作成)](http://beginner001.html.xdomain.jp/debug-02-1.html)
|
21
|
-
[パーフェクト
|
21
|
+
[パーフェクトPHP デバッグ (チェックポイント)](http://beginner001.html.xdomain.jp/debug-01.html)
|
22
|
-
|
22
|
+
[パーフェクトPHP デバッグ (その他)](http://beginner001.html.xdomain.jp/debug-03.html) (具体的な 環境設定手順)
|
23
|
+
[パーフェクトPHP デバッグ (**NetBeans デバッグ方法**)](http://beginner001.html.xdomain.jp/debug-04.html) (具体的な デバッグ例)
|
23
24
|
|
24
|
-
上記リンクの
|
25
25
|
[パーフェクトPHP をデバッグしました (学習方法)](https://beginner001.hatenablog.com/entry/2018/12/27/100003)
|
26
26
|
[パーフェクトPHP をデバッグしました (やる気のある初心者)](https://beginner001.hatenablog.com/entry/2018/12/27/100004)
|
27
|
+
|
28
|
+
上記リンクの
|
29
|
+
パーフェクトPHP をデバッグしました (学習方法) や
|
27
|
-
|
30
|
+
パーフェクトPHP をデバッグしました (やる気のある初心者)
|
28
31
|
に書いてありますが、**「写経」はおすすめしません。**
|
29
32
|
|
30
33
|
サンプルコードを理解すれば、**IDE デバッグ機能**を使って、エラーは解決できます。
|
31
34
|
当面は、サンプルコードの理解を優先してください。
|
32
35
|
|
33
|
-
|
34
36
|
あまり良い方法ではありませんが、
|
35
37
|
[差分ツール (WinMerge)](https://winmerge.org/?lang=ja) で
|
36
38
|
「フォルダ単位に」すべてのソースの違いを一括で調べることもできます。
|
@@ -42,7 +44,7 @@
|
|
42
44
|
---
|
43
45
|
####NetBeans デバッグ方法
|
44
46
|
|
45
|
-
**【エラー原因】**
|
47
|
+
**【エラーの原因】**
|
46
48
|
|
47
49
|
**NetBeans IDE デバッグ機能** を使った 具体的な デバッグ方法 です。
|
48
50
|
|
@@ -53,7 +55,7 @@
|
|
53
55
|
仕様 (ホームページ表示とログイン)
|
54
56
|
- サンプルコード: ホームページ(#5 Application->runAction('status', 'index', Array))は、ログイン後に表示されます
|
55
57
|
- orangefarmer さん: 未ログイン(#2 StatusRepository->fetchAllPersonalArchivesByUserId(NULL))で実行されています
|
56
|
-
- 対策 **下記** NetBeans ブレークポイント
|
58
|
+
- 対策 **下記** NetBeans ブレークポイント Session.php 49 参照
|
57
59
|
|
58
60
|
参考
|
59
61
|
- [処理の流れ | ホームページと投稿](http://beginner001.html.xdomain.jp/debug-02-2.html)
|
@@ -74,18 +76,18 @@
|
|
74
76
|
```
|
75
77
|
|
76
78
|
|
77
|
-
NetBeans ブレークポイント (3ヶ所設定)
|
79
|
+
NetBeans ブレークポイント (**3ヶ所**設定)
|
78
80
|
|ファイル|行|内容|次のアクション|
|
79
|
-
|:--|
|
81
|
+
|:--|--:|:--|:--|
|
80
82
|
|Application.php|184|$controller("status"), $action("index") 確認|続行 (F5)|
|
81
83
|
|Session.php|103|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
|
82
|
-
|
|
84
|
+
|Session.php|49|$default true に変更 (**上記** 仕様 対策)|続行 (F5)|
|
83
85
|
|DbRepository.php|41|$this->con false に変更 (PDO インスタンス 以外)|続行 (F5)|
|
84
86
|
|
85
|
-
**
|
87
|
+
**注 Session.php 49 は、ブレークポイントではありません**
|
86
88
|
|
87
|
-
実行後、**エラーが再現**
|
89
|
+
実行後、**エラーが再現**
|
88
|
-
原因は、**DB への接続ミス**
|
90
|
+
原因は、**DB への接続ミス**
|
89
91
|
|
90
92
|
|
91
93
|
Application.php
|
@@ -231,7 +233,7 @@
|
|
231
233
|
```
|
232
234
|
|
233
235
|
|
234
|
-
**上記 3ファイル の関連個所 (メソッド
|
236
|
+
**上記 3ファイル の関連個所 (メソッド)を調べる**
|
235
237
|
上記 3ファイルのうち、orangefarmer さんから コード提示されているのは、
|
236
238
|
MiniBlogApplication.php のみ
|
237
239
|
|
@@ -250,4 +252,36 @@
|
|
250
252
|
クリックすると、拡大表示します
|
251
253
|
|
252
254
|
正 protected function co**n**figure()
|
253
|
-
誤 protected function cofigure()
|
255
|
+
誤 protected function cofigure()
|
256
|
+
|
257
|
+
---
|
258
|
+
|
259
|
+
【エラーの理由】
|
260
|
+
|
261
|
+
**DB への接続ミス** になる理由です。
|
262
|
+
|
263
|
+
`class MiniBlogApplication extends Application` ← **extends** (継承)
|
264
|
+
`{`
|
265
|
+
` ... 省略`
|
266
|
+
`}`
|
267
|
+
|
268
|
+
|
269
|
+
MiniBlogApplication のメソッド
|
270
|
+
` protected function cofigure()` ← **オーバライドできない** (co**n**figure でないため)
|
271
|
+
` {`
|
272
|
+
` ... データベースへの接続設定`
|
273
|
+
` }`
|
274
|
+
|
275
|
+
|
276
|
+
Application の**空**のメソッド
|
277
|
+
` protected function configure()` ← co**n**figure
|
278
|
+
` {`
|
279
|
+
` }`
|
280
|
+
|
281
|
+
|
282
|
+
Application のコンストラクタ
|
283
|
+
` public function __construct($debug = false)`
|
284
|
+
` {`
|
285
|
+
` ... 省略`
|
286
|
+
` $this->configure();` ← **空**のメソッド co**n**figure (データベースへの接続設定 が**未定義**)
|
287
|
+
` }`
|
4
表 整形
answer
CHANGED
@@ -53,7 +53,7 @@
|
|
53
53
|
仕様 (ホームページ表示とログイン)
|
54
54
|
- サンプルコード: ホームページ(#5 Application->runAction('status', 'index', Array))は、ログイン後に表示されます
|
55
55
|
- orangefarmer さん: 未ログイン(#2 StatusRepository->fetchAllPersonalArchivesByUserId(NULL))で実行されています
|
56
|
-
- 対策 **下記** NetBeans ブレークポイント (Session.php) (49
|
56
|
+
- 対策 **下記** NetBeans ブレークポイント (Session.php) (49) 参照
|
57
57
|
|
58
58
|
参考
|
59
59
|
- [処理の流れ | ホームページと投稿](http://beginner001.html.xdomain.jp/debug-02-2.html)
|
@@ -77,12 +77,12 @@
|
|
77
77
|
NetBeans ブレークポイント (3ヶ所設定)
|
78
78
|
|ファイル|行|内容|次のアクション|
|
79
79
|
|:--|:--|:--|:--|
|
80
|
-
|Application.php|184
|
80
|
+
|Application.php|184|$controller("status"), $action("index") 確認|続行 (F5)|
|
81
|
-
|Session.php|103
|
81
|
+
|Session.php|103|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
|
82
|
-
|(Session.php)|(49
|
82
|
+
|(Session.php)|(49)|$default true に変更 (**上記** 仕様 対策)|続行 (F5)|
|
83
|
-
|DbRepository.php|41
|
83
|
+
|DbRepository.php|41|$this->con false に変更 (PDO インスタンス 以外)|続行 (F5)|
|
84
84
|
|
85
|
-
**(Session.php) (49
|
85
|
+
**(Session.php) (49) は、ブレークポイントではありません**
|
86
86
|
|
87
87
|
実行後、**エラーが再現**されます
|
88
88
|
原因は、**DB への接続ミス** です
|
3
画像へのコメント表示
answer
CHANGED
@@ -247,6 +247,7 @@
|
|
247
247
|
|
248
248
|
|
249
249
|

|
250
|
+
クリックすると、拡大表示します
|
250
251
|
|
251
252
|
正 protected function co**n**figure()
|
252
253
|
誤 protected function cofigure()
|
2
NetBeans デバッグ方法 追加
answer
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
###回答 と 参考サイトの紹介 です
|
1
|
+
###回答 と 参考サイトの紹介 と NetBeans デバッグ方法 です
|
2
2
|
|
3
3
|
回答です。
|
4
4
|
|
@@ -8,8 +8,12 @@
|
|
8
8
|
|
9
9
|
既に、指摘されていますが、**DB への接続ミス**です。
|
10
10
|
|
11
|
+
**NetBeans IDE デバッグ機能** を使って解決しました。
|
12
|
+
|
11
13
|
---
|
12
14
|
|
15
|
+
参考サイトの紹介です。
|
16
|
+
|
13
17
|
直接の回答ではありません。
|
14
18
|
(nullbotさんの好意を無駄にしたくないので...)
|
15
19
|
|
@@ -21,7 +25,7 @@
|
|
21
25
|
[パーフェクトPHP をデバッグしました (学習方法)](https://beginner001.hatenablog.com/entry/2018/12/27/100003)
|
22
26
|
[パーフェクトPHP をデバッグしました (やる気のある初心者)](https://beginner001.hatenablog.com/entry/2018/12/27/100004)
|
23
27
|
[NetBeans IDE のおかげで理解が飛躍的に](https://blogs.yahoo.co.jp/amegrapsp/41551211.html)
|
24
|
-
に書いてありますが、「写経」はおすすめしません。
|
28
|
+
に書いてありますが、**「写経」はおすすめしません。**
|
25
29
|
|
26
30
|
サンプルコードを理解すれば、**IDE デバッグ機能**を使って、エラーは解決できます。
|
27
31
|
当面は、サンプルコードの理解を優先してください。
|
@@ -33,4 +37,216 @@
|
|
33
37
|
(あくまで、「写経」の入力ミス チェックです)
|
34
38
|
|
35
39
|
最初は大変ですが、頑張ってください。
|
36
|
-
期待しています。
|
40
|
+
期待しています。
|
41
|
+
|
42
|
+
---
|
43
|
+
####NetBeans デバッグ方法
|
44
|
+
|
45
|
+
**【エラー原因】**
|
46
|
+
|
47
|
+
**NetBeans IDE デバッグ機能** を使った 具体的な デバッグ方法 です。
|
48
|
+
|
49
|
+
注意点
|
50
|
+
- 公式サイト サンプルコード(mini-blog.zip) を使用 (不具合 2ヶ所修正)
|
51
|
+
- デバッグ中の変数の**変更**は、**メモリ上**です (ファイルは元のまま)
|
52
|
+
|
53
|
+
仕様 (ホームページ表示とログイン)
|
54
|
+
- サンプルコード: ホームページ(#5 Application->runAction('status', 'index', Array))は、ログイン後に表示されます
|
55
|
+
- orangefarmer さん: 未ログイン(#2 StatusRepository->fetchAllPersonalArchivesByUserId(NULL))で実行されています
|
56
|
+
- 対策 **下記** NetBeans ブレークポイント (Session.php) (49行目) 参照
|
57
|
+
|
58
|
+
参考
|
59
|
+
- [処理の流れ | ホームページと投稿](http://beginner001.html.xdomain.jp/debug-02-2.html)
|
60
|
+
- [処理の流れ | アカウント情報管理とログイン](http://beginner001.html.xdomain.jp/debug-02-4.html)
|
61
|
+
|
62
|
+
|
63
|
+
エラー ログ
|
64
|
+
```
|
65
|
+
#6 C:\xampp\htdocs\php-blog.localhost\web\index_dev.php(7): Application->run()
|
66
|
+
#5 C:\xampp\htdocs\php-blog.localhost\core\Application.php(103): Application->runAction('status', 'index', Array)
|
67
|
+
#4 C:\xampp\htdocs\php-blog.localhost\core\Application.php(123): Controller->run('index', Array)
|
68
|
+
#3 C:\xampp\htdocs\php-blog.localhost\core\Controller.php(41): StatusController->indexAction(Array)
|
69
|
+
#2 C:\xampp\htdocs\php-blog.localhost\controllers\StatusController.php(8): StatusRepository->fetchAllPersonalArchivesByUserId(NULL)
|
70
|
+
#1 C:\xampp\htdocs\php-blog.localhost\models\StatusRepository.php(22): DbRepository->fetchAll('select a.*, u.u...', Array)
|
71
|
+
#0 C:\xampp\htdocs\php-blog.localhost\core\DbRepository.php(32): DbRepository->execute('select a.*, u.u...', Array)
|
72
|
+
|
73
|
+
Fatal error: Call to a member function prepare() on bool
|
74
|
+
```
|
75
|
+
|
76
|
+
|
77
|
+
NetBeans ブレークポイント (3ヶ所設定)
|
78
|
+
|ファイル|行|内容|次のアクション|
|
79
|
+
|:--|:--|:--|:--|
|
80
|
+
|Application.php|184行目|$controller("status"), $action("index") 確認|続行 (F5)|
|
81
|
+
|Session.php|103行目|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
|
82
|
+
|(Session.php)|(49行目)|$default true に変更 (**上記** 仕様 対策)|続行 (F5)|
|
83
|
+
|DbRepository.php|41行目|$this->con false に変更 (PDO インスタンス 以外)|続行 (F5)|
|
84
|
+
|
85
|
+
**(Session.php) (49行目) は、ブレークポイントではありません**
|
86
|
+
|
87
|
+
実行後、**エラーが再現**されます
|
88
|
+
原因は、**DB への接続ミス** です
|
89
|
+
|
90
|
+
|
91
|
+
Application.php
|
92
|
+
```PHP
|
93
|
+
...
|
94
|
+
173 public function run()
|
95
|
+
174 {
|
96
|
+
175 try {
|
97
|
+
176 $params = $this->router->resolve($this->request->getPathInfo());
|
98
|
+
177 if ($params === false) {
|
99
|
+
178 throw new HttpNotFoundException('No route found for ' . $this->request->getPathInfo());
|
100
|
+
179 }
|
101
|
+
180
|
102
|
+
181 $controller = $params['controller'];
|
103
|
+
182 $action = $params['action'];
|
104
|
+
183
|
105
|
+
184 $this->runAction($controller, $action, $params);
|
106
|
+
185 } catch (HttpNotFoundException $e) {
|
107
|
+
186 $this->render404Page($e);
|
108
|
+
187 } catch (UnauthorizedActionException $e) {
|
109
|
+
188 list($controller, $action) = $this->login_action;
|
110
|
+
189 $this->runAction($controller, $action);
|
111
|
+
190 }
|
112
|
+
191
|
113
|
+
...
|
114
|
+
```
|
115
|
+
|
116
|
+
|
117
|
+
Session.php
|
118
|
+
```PHP
|
119
|
+
...
|
120
|
+
43 public function get($name, $default = null)
|
121
|
+
44 {
|
122
|
+
45 if (isset($_SESSION[$name])) {
|
123
|
+
46 return $_SESSION[$name];
|
124
|
+
47 }
|
125
|
+
48
|
126
|
+
49 return $default;
|
127
|
+
50 }
|
128
|
+
...
|
129
|
+
101 public function isAuthenticated()
|
130
|
+
102 {
|
131
|
+
103 return $this->get('_authenticated', false);
|
132
|
+
104 }
|
133
|
+
...
|
134
|
+
```
|
135
|
+
|
136
|
+
|
137
|
+
DbRepository.php
|
138
|
+
```PHP
|
139
|
+
...
|
140
|
+
39 public function execute($sql, $params = array())
|
141
|
+
40 {
|
142
|
+
41 $stmt = $this->con->prepare($sql);
|
143
|
+
42 $stmt->execute($params);
|
144
|
+
43
|
145
|
+
44 return $stmt;
|
146
|
+
45 }
|
147
|
+
...
|
148
|
+
```
|
149
|
+
|
150
|
+
---
|
151
|
+
|
152
|
+
**【ソースコードを調べる】**
|
153
|
+
|
154
|
+
"**new PDO**" を検索 検索ツール(Devas)
|
155
|
+
|ファイル|メソッド|
|
156
|
+
|:--|:--|
|
157
|
+
|DbManager.php |public function **connect(**$name, $params)|
|
158
|
+
|
159
|
+
|
160
|
+
"**connect(**" を検索 検索ツール(Devas)
|
161
|
+
|ファイル|メソッド|
|
162
|
+
|:--|:--|
|
163
|
+
|MiniBlogApplication.php|protected function **configure(**)|
|
164
|
+
|~~DbManager.php~~|~~public function connect($name, $params)~~ 同上|
|
165
|
+
|
166
|
+
|
167
|
+
"**configure(**" を検索 検索ツール(Devas)
|
168
|
+
|ファイル|メソッド|
|
169
|
+
|:--|:--|
|
170
|
+
|~~MiniBlogApplication.php~~|~~protected function configure()~~ 同上|
|
171
|
+
|Application.php|public function __construct($debug = false)|
|
172
|
+
|Application.php|protected function configure()|
|
173
|
+
|
174
|
+
|
175
|
+
DbManager.php
|
176
|
+
```PHP
|
177
|
+
...
|
178
|
+
20 public function connect($name, $params)
|
179
|
+
21 {
|
180
|
+
22 $params = array_merge(array(
|
181
|
+
23 'dsn' => null,
|
182
|
+
24 'user' => '',
|
183
|
+
25 'password' => '',
|
184
|
+
26 'options' => array(),
|
185
|
+
27 ), $params);
|
186
|
+
28
|
187
|
+
29 $con = new PDO(
|
188
|
+
30 $params['dsn'],
|
189
|
+
31 $params['user'],
|
190
|
+
32 $params['password'],
|
191
|
+
33 $params['options']
|
192
|
+
34 );
|
193
|
+
35
|
194
|
+
36 $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
195
|
+
37
|
196
|
+
38 $this->connections[$name] = $con;
|
197
|
+
39 }
|
198
|
+
...
|
199
|
+
```
|
200
|
+
|
201
|
+
|
202
|
+
MiniBlogApplication.php
|
203
|
+
```PHP
|
204
|
+
...
|
205
|
+
37 protected function configure()
|
206
|
+
38 {
|
207
|
+
39 $this->db_manager->connect('master', array(
|
208
|
+
40 'dsn' => 'mysql:dbname=mini_blog;host=localhost;charset=utf8',
|
209
|
+
41 'user' => 'root',
|
210
|
+
42 'password' => '',
|
211
|
+
43 ));
|
212
|
+
44 }
|
213
|
+
...
|
214
|
+
```
|
215
|
+
|
216
|
+
|
217
|
+
Application.php
|
218
|
+
```PHP
|
219
|
+
...
|
220
|
+
21 public function __construct($debug = false)
|
221
|
+
22 {
|
222
|
+
23 $this->setDebugMode($debug);
|
223
|
+
24 $this->initialize();
|
224
|
+
25 $this->configure();
|
225
|
+
26 }
|
226
|
+
...
|
227
|
+
60 protected function configure()
|
228
|
+
61 {
|
229
|
+
62 }
|
230
|
+
...
|
231
|
+
```
|
232
|
+
|
233
|
+
|
234
|
+
**上記 3ファイル の関連個所 (メソッド等)を調べる**
|
235
|
+
上記 3ファイルのうち、orangefarmer さんから コード提示されているのは、
|
236
|
+
MiniBlogApplication.php のみ
|
237
|
+
|
238
|
+
MiniBlogApplication.php に**エラーが無い場合**
|
239
|
+
DbManager.php と Application.php のコード提示してもらう予定
|
240
|
+
|
241
|
+
---
|
242
|
+
|
243
|
+
**【修正箇所が分かる】**
|
244
|
+
|
245
|
+
差分ツール (WinMerge) で
|
246
|
+
サンプルコード の MiniBlogApplication.php と orangefarmer さんの MiniBlogApplication.php を比較する
|
247
|
+
|
248
|
+
|
249
|
+

|
250
|
+
|
251
|
+
正 protected function co**n**figure()
|
252
|
+
誤 protected function cofigure()
|
1
回答 追加
answer
CHANGED
@@ -1,16 +1,27 @@
|
|
1
|
-
###参考サイトの紹介です
|
1
|
+
###回答 と 参考サイトの紹介 です
|
2
2
|
|
3
|
+
回答です。
|
4
|
+
|
5
|
+
PhpBlogApplication.php (MiniBlogApplication.php)
|
6
|
+
誤 protected function cofigure()
|
7
|
+
正 protected function co**n**figure()
|
8
|
+
|
9
|
+
既に、指摘されていますが、**DB への接続ミス**です。
|
10
|
+
|
11
|
+
---
|
12
|
+
|
3
13
|
直接の回答ではありません。
|
4
14
|
(nullbotさんの好意を無駄にしたくないので...)
|
5
15
|
|
6
16
|
teratail
|
7
17
|
[パーフェクトphpの7章の例題の変数の中身が知りたい。](https://teratail.com/questions/185638) の
|
8
|
-
「参考サイトの紹介です」の**各リンク**
|
18
|
+
「参考サイトの紹介です」の**各リンク**もご覧ください。
|
9
19
|
|
10
20
|
上記リンクの
|
11
|
-
[パーフェクトPHP をデバッグしました (学習方法)](https://beginner001.hatenablog.com/entry/2018/12/27/100003)
|
21
|
+
[パーフェクトPHP をデバッグしました (学習方法)](https://beginner001.hatenablog.com/entry/2018/12/27/100003)
|
12
|
-
[パーフェクトPHP をデバッグしました (やる気のある初心者)](https://beginner001.hatenablog.com/entry/2018/12/27/100004)
|
22
|
+
[パーフェクトPHP をデバッグしました (やる気のある初心者)](https://beginner001.hatenablog.com/entry/2018/12/27/100004)
|
23
|
+
[NetBeans IDE のおかげで理解が飛躍的に](https://blogs.yahoo.co.jp/amegrapsp/41551211.html)
|
13
|
-
書いてありますが、「写経」はおすすめしません。
|
24
|
+
に書いてありますが、「写経」はおすすめしません。
|
14
25
|
|
15
26
|
サンプルコードを理解すれば、**IDE デバッグ機能**を使って、エラーは解決できます。
|
16
27
|
当面は、サンプルコードの理解を優先してください。
|