回答編集履歴

43

微調整

2019/11/15 01:35

投稿

退会済みユーザー
test CHANGED
@@ -598,7 +598,7 @@
598
598
 
599
599
   
600
600
 
601
- > 今回の NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
601
+ > コード理解のための NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
602
602
 
603
603
  > **サンプルコード の「処理の流れ」と「変数の値」を調べるために** 使います
604
604
 

42

微調整

2019/11/15 01:35

投稿

退会済みユーザー
test CHANGED
@@ -584,7 +584,7 @@
584
584
 
585
585
 
586
586
 
587
- > NetBeans IDE デバッグ機能
587
+ > NetBeans IDE デバッグ機能 には、2通りの使い方があります
588
588
 
589
589
  >
590
590
 
@@ -598,7 +598,7 @@
598
598
 
599
599
   
600
600
 
601
- > NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
601
+ > 今回の NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
602
602
 
603
603
  > **サンプルコード の「処理の流れ」と「変数の値」を調べるために** 使います
604
604
 

41

微調整

2019/11/03 00:56

投稿

退会済みユーザー
test CHANGED
@@ -44,8 +44,6 @@
44
44
 
45
45
  > [パーフェクトPHP をデバッグしました (やる気のある初心者)](https://beginner001.hatenablog.com/entry/2018/12/27/100004)
46
46
 
47
- > [NetBeans IDE のおかげで理解が飛躍的に](https://blogs.yahoo.co.jp/amegrapsp/41551211.html) (Mac ユーザ の NetBeans IDE 使用)
48
-
49
47
 
50
48
 
51
49
  パーフェクトPHP をデバッグしました (学習方法) や

40

微調整

2019/09/10 00:40

投稿

退会済みユーザー
test CHANGED
@@ -588,9 +588,11 @@
588
588
 
589
589
  > NetBeans IDE デバッグ機能
590
590
 
591
+ >
592
+
591
593
  - バグを見つける (本来のデバッグ)
592
594
 
593
- >
595
+ >
594
596
 
595
597
  - コードを追う (コードの理解)
596
598
 

39

微調整

2019/09/06 01:09

投稿

退会済みユーザー
test CHANGED
@@ -530,7 +530,7 @@
530
530
 
531
531
  ...
532
532
 
533
- __ (MiniBlogApplication.php にエラーがあったので、コードの提示は必要無くなった) __
533
+ (__MiniBlogApplication.php__ にエラーがあったので、コードの提示は必要無くなった)
534
534
 
535
535
 
536
536
 
@@ -586,21 +586,31 @@
586
586
 
587
587
 
588
588
 
589
+ > NetBeans IDE デバッグ機能
590
+
591
+ - バグを見つける (本来のデバッグ)
592
+
593
+ >
594
+
595
+ - コードを追う (コードの理解)
596
+
597
+
598
+
599
+  
600
+
601
+ > NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
602
+
603
+ > **サンプルコード の「処理の流れ」と「変数の値」を調べるために** 使います
604
+
589
605
  >  
590
606
 
591
- > NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
592
-
593
- > **サンプルコード の「処理の流れ」と「変数の値」を調べるために** 使います
594
-
595
- >  
596
-
597
607
  > どんなツールも初めは大変ですが、すぐに慣れます
598
608
 
599
609
  > 特に、**初心者の方** には効果が大きいです 
600
610
 
601
611
  > [**デバッグ例**](http://beginner001.html.xdomain.jp/debug-04.html#NetBeans_debug_example)
602
612
 
603
- >  
613
+
604
614
 
605
615
 
606
616
 

38

微調整

2019/09/05 06:03

投稿

退会済みユーザー
test CHANGED
@@ -104,6 +104,8 @@
104
104
 
105
105
  - デバッグ中の変数の**変更**は、**メモリ上**です (ファイルは元のまま)
106
106
 
107
+ - index.php ではなく index**_dev**.php を使用します
108
+
107
109
 
108
110
 
109
111
  > サンプルコードの仕様 と orangefarmerさんの仕様 との違い (ホームページ表示とログイン)
@@ -681,3 +683,11 @@
681
683
  ` $this->configure();` ← **空** のメソッドのまま co**n**figure (データベースへの接続設定 が **未定義**)
682
684
 
683
685
  ` }`
686
+
687
+
688
+
689
+ ##### 上記エラーで、フレームワークとオブジェクト指向の「考え方」が良く分かります
690
+
691
+
692
+
693
+ ---

37

微調整

2019/09/03 01:03

投稿

退会済みユーザー
test CHANGED
@@ -526,9 +526,9 @@
526
526
 
527
527
  DbManager.php と Application.php のコード提示をしてもらう予定
528
528
 
529
-
529
+ ...
530
-
530
+
531
- (MiniBlogApplication.php にエラーがあったので、コードの提示は必要無くなった)
531
+ __ (MiniBlogApplication.php にエラーがあったので、コードの提示は必要無くなった) __
532
532
 
533
533
 
534
534
 

36

微調整

2019/08/31 01:22

投稿

退会済みユーザー
test CHANGED
@@ -588,9 +588,15 @@
588
588
 
589
589
  > NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
590
590
 
591
- > 処理の流れ と 変数の値 が分かることで
592
-
593
- > **「フレムワーク内部」と「オブジェクト指向」を理解するために使います**
591
+ > **サンプルコ「処理の流れ」と「変数の値」を調べるために** 使います
592
+
593
+ >  
594
+
595
+ > どんなツールも初めは大変ですが、すぐに慣れます
596
+
597
+ > 特に、**初心者の方** には効果が大きいです 
598
+
599
+ > [**デバッグ例**](http://beginner001.html.xdomain.jp/debug-04.html#NetBeans_debug_example)
594
600
 
595
601
  >  
596
602
 

35

微調整

2019/08/31 01:02

投稿

退会済みユーザー
test CHANGED
@@ -140,7 +140,7 @@
140
140
 
141
141
  デバッグ対策 **下記** NetBeans ブレークポイント Session 49 参照
142
142
 
143
- orangefarmerさんの仕様 に合わせるため、強引に **未ログイン状態 可** にしています
143
+ orangefarmerさんの仕様 に合わせるため、強引に **未ログイン状態 可** にしています
144
144
 
145
145
 
146
146
 

34

微調整

2019/08/30 02:13

投稿

退会済みユーザー
test CHANGED
@@ -140,6 +140,8 @@
140
140
 
141
141
  デバッグ対策 **下記** NetBeans ブレークポイント Session 49 参照
142
142
 
143
+ orangefarmerさんの仕様 に合わせるために、強引に **未ログイン状態 可** にしています
144
+
143
145
 
144
146
 
145
147
  参考

33

微調整

2019/08/30 02:07

投稿

退会済みユーザー
test CHANGED
@@ -208,7 +208,7 @@
208
208
 
209
209
  **原因**
210
210
 
211
- > デバッグを実行すると、最後に **エラーが再現** されます
211
+ > デバッグを実行すると、最後に **エラーが再現** されます
212
212
 
213
213
  >  
214
214
 

32

微調整

2019/08/30 01:55

投稿

退会済みユーザー
test CHANGED
@@ -206,143 +206,395 @@
206
206
 
207
207
 
208
208
 
209
+ **原因**
210
+
211
+ > デバッグを実行すると、最後に **エラーが再現** されます
212
+
209
213
  >  
210
214
 
211
- > デバッグを実行すると、最後に **エラが再現** されます
215
+ > 「正しい」**タベースへの接続設定 (PDO インスタンス)**
216
+
217
+ **$this->con** を「壊しています」
212
218
 
213
219
  >  
214
220
 
215
- > 「正しい」**データベースへの接続設定 (PDO インスタンス)** の
216
-
217
- **$this->con** を「壊しています」
221
+ > (DbRepository 41* **$this->con** false に変更)
218
222
 
219
223
  >  
220
224
 
225
+ > エラーの原因は、**DB への接続ミス**です
226
+
227
+
228
+
229
+ Application.php
230
+
231
+ ```PHP
232
+
233
+ ...
234
+
235
+ 173 public function run()
236
+
237
+ 174 {
238
+
239
+ 175 try {
240
+
241
+ 176 $params = $this->router->resolve($this->request->getPathInfo());
242
+
243
+ 177 if ($params === false) {
244
+
245
+ 178 throw new HttpNotFoundException('No route found for ' . $this->request->getPathInfo());
246
+
247
+ 179 }
248
+
249
+ 180
250
+
251
+ 181 $controller = $params['controller'];
252
+
253
+ 182 $action = $params['action'];
254
+
255
+ 183
256
+
257
+ 184* $this->runAction($controller, $action, $params); /* ブレークポイント */
258
+
259
+ 185 } catch (HttpNotFoundException $e) {
260
+
221
- > (DbRepository 41* **$this->con** false に変更)
261
+ 186 $this->render404Page($e);
262
+
263
+ 187 } catch (UnauthorizedActionException $e) {
264
+
265
+ 188 list($controller, $action) = $this->login_action;
266
+
267
+ 189 $this->runAction($controller, $action);
268
+
269
+ 190 }
270
+
271
+ 191
272
+
273
+ ...
274
+
275
+ ```
276
+
277
+
278
+
279
+  
280
+
281
+ Session.php
282
+
283
+ ```PHP
284
+
285
+ ...
286
+
287
+ 43 public function get($name, $default = null)
288
+
289
+ 44 {
290
+
291
+ 45 if (isset($_SESSION[$name])) {
292
+
293
+ 46 return $_SESSION[$name];
294
+
295
+ 47 }
296
+
297
+ 48
298
+
299
+ 49 return $default; /* $default true に変更 */
300
+
301
+ 50 }
302
+
303
+ ...
304
+
305
+ 101 public function isAuthenticated()
306
+
307
+ 102 {
308
+
309
+ 103* return $this->get('_authenticated', false); /* ブレークポイント */
310
+
311
+ 104 }
312
+
313
+ ...
314
+
315
+ ```
316
+
317
+
318
+
319
+  
320
+
321
+ DbRepository.php
322
+
323
+ ```PHP
324
+
325
+ ...
326
+
327
+ 39 public function execute($sql, $params = array())
328
+
329
+ 40 {
330
+
331
+ 41* $stmt = $this->con->prepare($sql); /* ブレークポイント $this->con false に変更 */
332
+
333
+ 42 $stmt->execute($params);
334
+
335
+ 43
336
+
337
+ 44 return $stmt;
338
+
339
+ 45 }
340
+
341
+ ...
342
+
343
+ ```
344
+
345
+
346
+
347
+ ---
348
+
349
+
350
+
351
+ **【コードを調べる】**
352
+
353
+
354
+
355
+ 「**DB への接続** のスタートである」"**new PDO**" を検索 検索ツール(__Devas__)
356
+
357
+ |ファイル|メソッド|
358
+
359
+ |:--|:--|
360
+
361
+ |DbManager.php |public function **connect(**$name, $params)|
362
+
363
+
364
+
365
+  
366
+
367
+ "**connect(**" を検索 検索ツール(__Devas__)
368
+
369
+ |ファイル|メソッド|
370
+
371
+ |:--|:--|
372
+
373
+ |MiniBlogApplication.php|protected function **configure(**)|
374
+
375
+ |~~DbManager.php~~|~~public function connect($name, $params)~~ 同上|
376
+
377
+
378
+
379
+  
380
+
381
+ "**configure(**" を検索 検索ツール(__Devas__)
382
+
383
+ |ファイル|メソッド|
384
+
385
+ |:--|:--|
386
+
387
+ |~~MiniBlogApplication.php~~|~~protected function configure()~~ 同上|
388
+
389
+ |Application.php|public function __construct($debug = false)|
390
+
391
+ |Application.php|protected function configure()|
392
+
393
+
394
+
395
+  
396
+
397
+ DbManager.php
398
+
399
+ ```PHP
400
+
401
+ ...
402
+
403
+ 20 public function connect($name, $params)
404
+
405
+ 21 {
406
+
407
+ 22 $params = array_merge(array(
408
+
409
+ 23 'dsn' => null,
410
+
411
+ 24 'user' => '',
412
+
413
+ 25 'password' => '',
414
+
415
+ 26 'options' => array(),
416
+
417
+ 27 ), $params);
418
+
419
+ 28
420
+
421
+ 29 $con = new PDO( /* "new PDO" を検索 */
422
+
423
+ 30 $params['dsn'],
424
+
425
+ 31 $params['user'],
426
+
427
+ 32 $params['password'],
428
+
429
+ 33 $params['options']
430
+
431
+ 34 );
432
+
433
+ 35
434
+
435
+ 36 $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
436
+
437
+ 37
438
+
439
+ 38 $this->connections[$name] = $con;
440
+
441
+ 39 }
442
+
443
+ ...
444
+
445
+ ```
446
+
447
+
448
+
449
+  
450
+
451
+ MiniBlogApplication.php
452
+
453
+ ```PHP
454
+
455
+ ...
456
+
457
+ 37 protected function configure()
458
+
459
+ 38 {
460
+
461
+ 39 $this->db_manager->connect('master', array(
462
+
463
+ 40 'dsn' => 'mysql:dbname=mini_blog;host=localhost;charset=utf8',
464
+
465
+ 41 'user' => 'root',
466
+
467
+ 42 'password' => '',
468
+
469
+ 43 ));
470
+
471
+ 44 }
472
+
473
+ ...
474
+
475
+ ```
476
+
477
+
478
+
479
+  
480
+
481
+ Application.php
482
+
483
+ ```PHP
484
+
485
+ ...
486
+
487
+ 21 public function __construct($debug = false)
488
+
489
+ 22 {
490
+
491
+ 23 $this->setDebugMode($debug);
492
+
493
+ 24 $this->initialize();
494
+
495
+ 25 $this->configure();
496
+
497
+ 26 }
498
+
499
+ ...
500
+
501
+ 60 protected function configure()
502
+
503
+ 61 {
504
+
505
+ 62 }
506
+
507
+ ...
508
+
509
+ ```
510
+
511
+
512
+
513
+  
514
+
515
+ **上記 3ファイル の メソッド を調べる**
516
+
517
+ 3ファイルのうち、orangefarmer さんから コード提示されているのは、
518
+
519
+ MiniBlogApplication.php のみ
520
+
521
+
522
+
523
+ MiniBlogApplication.php に**エラーが無い場合**
524
+
525
+ DbManager.php と Application.php のコード提示をしてもらう予定
526
+
527
+
528
+
529
+ (MiniBlogApplication.php にエラーがあったので、コードの提示は必要無くなった)
530
+
531
+
532
+
533
+ ---
534
+
535
+
536
+
537
+ **【修正箇所が分かる & NetBeans IDE デバッグ機能】**
538
+
539
+
540
+
541
+ 差分ツール (**__WinMerge__**) で
542
+
543
+ MiniBlogApplication.php (サンプルコード) と
544
+
545
+ MiniBlogApplication.php (orangefarmer さん) を
546
+
547
+ 比較する
548
+
549
+
550
+
551
+
552
+
553
+ ![MiniBlogApplication.phpの比較](c26d5241bd8a86a8dfe542b1a5973cd8.jpeg)
554
+
555
+ **画像** MiniBlogApplication.phpの比較 (クリックすると、拡大表示します)
556
+
557
+
558
+
559
+ 正 protected function co**n**figure()
560
+
561
+ 誤 protected function cofigure()
562
+
563
+
564
+
565
+  
566
+
567
+ 今回のエラーを解決しても、別の不具合が出ます
568
+
569
+ - ホームページのデータ件数 ゼロ
570
+
571
+ - エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
572
+
573
+ - ログイン機能のデバッグ (or 実装)
574
+
575
+ - 写経 未完成 (ルーティング registerRoutes 参照) **画像** MiniBlogApplication.phpの比較 ↑
576
+
577
+
578
+
579
+ すべての写経のエラーを解決しても、フレームワークの内部とオブジェクト指向は理解できません
580
+
581
+ ##### 「NetBeans IDE デバッグ機能」 使って「フレームワークの内部」と「オブジェクト指向」を理解しましょう (ダウンロードした サンプルコード 使用)
582
+
583
+
222
584
 
223
585
  >  
224
586
 
587
+ > NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
588
+
225
- > エラー原因は、**DB 接続ミス**
589
+ > 処理流れ と 変数値 が分かること
590
+
591
+ > **「フレームワークの内部」と「オブジェクト指向」を理解するために使います**
226
592
 
227
593
  >  
228
594
 
229
595
 
230
596
 
231
- Application.php
232
-
233
- ```PHP
234
-
235
- ...
236
-
237
- 173 public function run()
238
-
239
- 174 {
240
-
241
- 175 try {
242
-
243
- 176 $params = $this->router->resolve($this->request->getPathInfo());
244
-
245
- 177 if ($params === false) {
246
-
247
- 178 throw new HttpNotFoundException('No route found for ' . $this->request->getPathInfo());
248
-
249
- 179 }
250
-
251
- 180
252
-
253
- 181 $controller = $params['controller'];
254
-
255
- 182 $action = $params['action'];
256
-
257
- 183
258
-
259
- 184* $this->runAction($controller, $action, $params); /* ブレークポイント */
260
-
261
- 185 } catch (HttpNotFoundException $e) {
262
-
263
- 186 $this->render404Page($e);
264
-
265
- 187 } catch (UnauthorizedActionException $e) {
266
-
267
- 188 list($controller, $action) = $this->login_action;
268
-
269
- 189 $this->runAction($controller, $action);
270
-
271
- 190 }
272
-
273
- 191
274
-
275
- ...
276
-
277
- ```
278
-
279
-
280
-
281
-  
282
-
283
- Session.php
284
-
285
- ```PHP
286
-
287
- ...
288
-
289
- 43 public function get($name, $default = null)
290
-
291
- 44 {
292
-
293
- 45 if (isset($_SESSION[$name])) {
294
-
295
- 46 return $_SESSION[$name];
296
-
297
- 47 }
298
-
299
- 48
300
-
301
- 49 return $default; /* $default true に変更 */
302
-
303
- 50 }
304
-
305
- ...
306
-
307
- 101 public function isAuthenticated()
308
-
309
- 102 {
310
-
311
- 103* return $this->get('_authenticated', false); /* ブレークポイント */
312
-
313
- 104 }
314
-
315
- ...
316
-
317
- ```
318
-
319
-
320
-
321
-  
322
-
323
- DbRepository.php
324
-
325
- ```PHP
326
-
327
- ...
328
-
329
- 39 public function execute($sql, $params = array())
330
-
331
- 40 {
332
-
333
- 41* $stmt = $this->con->prepare($sql); /* ブレークポイント $this->con false に変更 */
334
-
335
- 42 $stmt->execute($params);
336
-
337
- 43
338
-
339
- 44 return $stmt;
597
+ 詳細は、**参考サイトのリンク** をご覧ください
340
-
341
- 45 }
342
-
343
- ...
344
-
345
- ```
346
598
 
347
599
 
348
600
 
@@ -350,260 +602,6 @@
350
602
 
351
603
 
352
604
 
353
- **【コードを調べる】**
354
-
355
-
356
-
357
- 「**DB への接続** のスタートである」"**new PDO**" を検索 検索ツール(__Devas__)
358
-
359
- |ファイル|メソッド|
360
-
361
- |:--|:--|
362
-
363
- |DbManager.php |public function **connect(**$name, $params)|
364
-
365
-
366
-
367
-  
368
-
369
- "**connect(**" を検索 検索ツール(__Devas__)
370
-
371
- |ファイル|メソッド|
372
-
373
- |:--|:--|
374
-
375
- |MiniBlogApplication.php|protected function **configure(**)|
376
-
377
- |~~DbManager.php~~|~~public function connect($name, $params)~~ 同上|
378
-
379
-
380
-
381
-  
382
-
383
- "**configure(**" を検索 検索ツール(__Devas__)
384
-
385
- |ファイル|メソッド|
386
-
387
- |:--|:--|
388
-
389
- |~~MiniBlogApplication.php~~|~~protected function configure()~~ 同上|
390
-
391
- |Application.php|public function __construct($debug = false)|
392
-
393
- |Application.php|protected function configure()|
394
-
395
-
396
-
397
-  
398
-
399
- DbManager.php
400
-
401
- ```PHP
402
-
403
- ...
404
-
405
- 20 public function connect($name, $params)
406
-
407
- 21 {
408
-
409
- 22 $params = array_merge(array(
410
-
411
- 23 'dsn' => null,
412
-
413
- 24 'user' => '',
414
-
415
- 25 'password' => '',
416
-
417
- 26 'options' => array(),
418
-
419
- 27 ), $params);
420
-
421
- 28
422
-
423
- 29 $con = new PDO( /* "new PDO" を検索 */
424
-
425
- 30 $params['dsn'],
426
-
427
- 31 $params['user'],
428
-
429
- 32 $params['password'],
430
-
431
- 33 $params['options']
432
-
433
- 34 );
434
-
435
- 35
436
-
437
- 36 $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
438
-
439
- 37
440
-
441
- 38 $this->connections[$name] = $con;
442
-
443
- 39 }
444
-
445
- ...
446
-
447
- ```
448
-
449
-
450
-
451
-  
452
-
453
- MiniBlogApplication.php
454
-
455
- ```PHP
456
-
457
- ...
458
-
459
- 37 protected function configure()
460
-
461
- 38 {
462
-
463
- 39 $this->db_manager->connect('master', array(
464
-
465
- 40 'dsn' => 'mysql:dbname=mini_blog;host=localhost;charset=utf8',
466
-
467
- 41 'user' => 'root',
468
-
469
- 42 'password' => '',
470
-
471
- 43 ));
472
-
473
- 44 }
474
-
475
- ...
476
-
477
- ```
478
-
479
-
480
-
481
-  
482
-
483
- Application.php
484
-
485
- ```PHP
486
-
487
- ...
488
-
489
- 21 public function __construct($debug = false)
490
-
491
- 22 {
492
-
493
- 23 $this->setDebugMode($debug);
494
-
495
- 24 $this->initialize();
496
-
497
- 25 $this->configure();
498
-
499
- 26 }
500
-
501
- ...
502
-
503
- 60 protected function configure()
504
-
505
- 61 {
506
-
507
- 62 }
508
-
509
- ...
510
-
511
- ```
512
-
513
-
514
-
515
-  
516
-
517
- **上記 3ファイル の メソッド を調べる**
518
-
519
- 3ファイルのうち、orangefarmer さんから コード提示されているのは、
520
-
521
- MiniBlogApplication.php のみ
522
-
523
-
524
-
525
- MiniBlogApplication.php に**エラーが無い場合**
526
-
527
- DbManager.php と Application.php のコード提示をしてもらう予定
528
-
529
-
530
-
531
- (MiniBlogApplication.php にエラーがあったので、コードの提示は必要無くなった)
532
-
533
-
534
-
535
- ---
536
-
537
-
538
-
539
- **【修正箇所が分かる & NetBeans IDE デバッグ機能】**
540
-
541
-
542
-
543
- 差分ツール (**__WinMerge__**) で
544
-
545
- MiniBlogApplication.php (サンプルコード) と
546
-
547
- MiniBlogApplication.php (orangefarmer さん) を
548
-
549
- 比較する
550
-
551
-
552
-
553
-
554
-
555
- ![MiniBlogApplication.phpの比較](c26d5241bd8a86a8dfe542b1a5973cd8.jpeg)
556
-
557
- **画像** MiniBlogApplication.phpの比較 (クリックすると、拡大表示します)
558
-
559
-
560
-
561
- 正 protected function co**n**figure()
562
-
563
- 誤 protected function cofigure()
564
-
565
-
566
-
567
-  
568
-
569
- 今回のエラーを解決しても、別の不具合が出ます
570
-
571
- - ホームページのデータ件数 ゼロ
572
-
573
- - エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
574
-
575
- - ログイン機能のデバッグ (or 実装)
576
-
577
- - 写経 未完成 (ルーティング registerRoutes 参照) **画像** MiniBlogApplication.phpの比較 ↑
578
-
579
-
580
-
581
- すべての写経のエラーを解決しても、フレームワークの内部とオブジェクト指向は理解できません
582
-
583
- ##### 「NetBeans IDE デバッグ機能」 使って「フレームワークの内部」と「オブジェクト指向」を理解しましょう (ダウンロードした サンプルコード 使用)
584
-
585
-
586
-
587
- >  
588
-
589
- > NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
590
-
591
- > 処理の流れ と 変数の値 が分かることで
592
-
593
- > **「フレームワークの内部」と「オブジェクト指向」を理解するために使います**
594
-
595
- >  
596
-
597
-
598
-
599
- 詳細は、**参考サイトのリンク** をご覧ください
600
-
601
-
602
-
603
- ---
604
-
605
-
606
-
607
605
  【エラーの理由】
608
606
 
609
607
 

31

微調整

2019/08/28 07:28

投稿

退会済みユーザー
test CHANGED
@@ -130,7 +130,7 @@
130
130
 
131
131
  >>
132
132
 
133
- - エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**) 本来は、NULLの部分に ログインユーザ ($user['id']) の値がセットされます
133
+ - エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**) 本来は、NULLの部分に ログインユーザ ($user['id']) の がセットされます
134
134
 
135
135
  >>
136
136
 

30

微調整

2019/08/28 01:18

投稿

退会済みユーザー
test CHANGED
@@ -106,9 +106,9 @@
106
106
 
107
107
 
108
108
 
109
- サンプルコードの仕様 と orangefarmerさんの仕様 との違い (ホームページ表示とログイン)
109
+ > サンプルコードの仕様 と orangefarmerさんの仕様 との違い (ホームページ表示とログイン)
110
-
111
-
110
+
111
+  
112
112
 
113
113
  > サンプルコードの仕様
114
114
 
@@ -126,7 +126,7 @@
126
126
 
127
127
  >>
128
128
 
129
- - **未ログイン**で、ホームページ表示が実行されます (今回は **DB への接続ミス** で 表示は中断)
129
+ - **未ログイン**で、ホームページ表示が実行されます (今回は **DB への接続ミス** で 処理は中断)
130
130
 
131
131
  >>
132
132
 
@@ -210,7 +210,13 @@
210
210
 
211
211
  > デバッグを実行すると、最後に **エラーが再現** されます
212
212
 
213
+ >  
214
+
213
- > 「正しい」**データベースへの接続設定 (PDO インスタンス)** の **$this->con** を「壊しています」
215
+ > 「正しい」**データベースへの接続設定 (PDO インスタンス)** の
216
+
217
+ **$this->con** を「壊しています」
218
+
219
+ >  
214
220
 
215
221
  > (DbRepository 41* **$this->con** false に変更)
216
222
 
@@ -568,7 +574,7 @@
568
574
 
569
575
  - ログイン機能のデバッグ (or 実装)
570
576
 
571
- - 写経 未完成 (ルーティング registerRoutes) **画像** MiniBlogApplication.phpの比較 参照
577
+ - 写経 未完成 (ルーティング registerRoutes 参照) **画像** MiniBlogApplication.phpの比較
572
578
 
573
579
 
574
580
 
@@ -584,7 +590,7 @@
584
590
 
585
591
  > 処理の流れ と 変数の値 が分かることで
586
592
 
587
- > 「フレームワークの内部」と「オブジェクト指向」を理解するために使います
593
+ > **「フレームワークの内部」と「オブジェクト指向」を理解するために使います**
588
594
 
589
595
  >  
590
596
 

29

微調整

2019/08/28 01:07

投稿

退会済みユーザー
test CHANGED
@@ -100,7 +100,7 @@
100
100
 
101
101
  注意点
102
102
 
103
- - 公式サイト サンプルコード(mini-blog.zip) を使用 (不具合 2ヶ所修正)
103
+ - 公式サイト **サンプルコード(mini-blog.zip)** を使用 (不具合 2ヶ所修正)
104
104
 
105
105
  - デバッグ中の変数の**変更**は、**メモリ上**です (ファイルは元のまま)
106
106
 
@@ -348,7 +348,7 @@
348
348
 
349
349
 
350
350
 
351
- 「**DB への接続** のスタートである」"**new PDO**" を検索 検索ツール(Devas)
351
+ 「**DB への接続** のスタートである」"**new PDO**" を検索 検索ツール(__Devas__)
352
352
 
353
353
  |ファイル|メソッド|
354
354
 
@@ -360,7 +360,7 @@
360
360
 
361
361
   
362
362
 
363
- "**connect(**" を検索 検索ツール(Devas)
363
+ "**connect(**" を検索 検索ツール(__Devas__)
364
364
 
365
365
  |ファイル|メソッド|
366
366
 
@@ -374,7 +374,7 @@
374
374
 
375
375
   
376
376
 
377
- "**configure(**" を検索 検索ツール(Devas)
377
+ "**configure(**" を検索 検索ツール(__Devas__)
378
378
 
379
379
  |ファイル|メソッド|
380
380
 
@@ -534,9 +534,13 @@
534
534
 
535
535
 
536
536
 
537
- 差分ツール (WinMerge) で
537
+ 差分ツール (**__WinMerge__**) で
538
+
538
-
539
+ MiniBlogApplication.php (サンプルコード) と
540
+
539
- サンプルコード の MiniBlogApplication.php orangefarmer さん MiniBlogApplication.php 比較する
541
+ MiniBlogApplication.php (orangefarmer さん)
542
+
543
+ 比較する
540
544
 
541
545
 
542
546
 
@@ -564,13 +568,13 @@
564
568
 
565
569
  - ログイン機能のデバッグ (or 実装)
566
570
 
567
- - 写経 未完成 (ルーティング registerRoutes) **画像** MiniBlogApplication.phpの比較 参照
571
+ - 写経 未完成 (ルーティング registerRoutes) **画像** MiniBlogApplication.phpの比較 参照
568
572
 
569
573
 
570
574
 
571
575
  すべての写経のエラーを解決しても、フレームワークの内部とオブジェクト指向は理解できません
572
576
 
573
- ##### NetBeans IDE デバッグ機能 使って「フレームワークの内部」と「オブジェクト指向」を理解しましょう (ダウンロードした サンプルコード 使用)
577
+ ##### NetBeans IDE デバッグ機能 使って「フレームワークの内部」と「オブジェクト指向」を理解しましょう (ダウンロードした サンプルコード 使用)
574
578
 
575
579
 
576
580
 

28

微調整

2019/08/27 09:02

投稿

退会済みユーザー
test CHANGED
@@ -44,7 +44,7 @@
44
44
 
45
45
  > [パーフェクトPHP をデバッグしました (やる気のある初心者)](https://beginner001.hatenablog.com/entry/2018/12/27/100004)
46
46
 
47
- > [NetBeans IDE のおかげで理解が飛躍的に](https://blogs.yahoo.co.jp/amegrapsp/41551211.html) (Mac ユーザ NetBeans IDE 使用)
47
+ > [NetBeans IDE のおかげで理解が飛躍的に](https://blogs.yahoo.co.jp/amegrapsp/41551211.html) (Mac ユーザ NetBeans IDE 使用)
48
48
 
49
49
 
50
50
 
@@ -542,9 +542,9 @@
542
542
 
543
543
 
544
544
 
545
- ![MiniBlogApplication.php の比較](c26d5241bd8a86a8dfe542b1a5973cd8.jpeg)
545
+ ![MiniBlogApplication.phpの比較](c26d5241bd8a86a8dfe542b1a5973cd8.jpeg)
546
-
546
+
547
- クリックすると、拡大表示します
547
+ **画像** MiniBlogApplication.phpの比較 (クリックすると、拡大表示します)
548
548
 
549
549
 
550
550
 
@@ -564,7 +564,7 @@
564
564
 
565
565
  - ログイン機能のデバッグ (or 実装)
566
566
 
567
- - 写経 未完成? (ルーティング registerRoutes) **差分ツール図** 参照
567
+ - 写経 未完成? (ルーティング registerRoutes) **画像** MiniBlogApplication.phpの比較 参照
568
568
 
569
569
 
570
570
 

27

微調整

2019/08/27 02:45

投稿

退会済みユーザー
test CHANGED
@@ -60,9 +60,9 @@
60
60
 
61
61
  **【パーフェクトPHP デバッグ 動作環境】**
62
62
 
63
- XAMPP 5.6.31
63
+ - XAMPP 5.6.31
64
-
64
+
65
- NetBeans 8.2
65
+ - NetBeans 8.2
66
66
 
67
67
 
68
68
 
@@ -202,6 +202,8 @@
202
202
 
203
203
  **注 Session 49 は、ブレークポイントではありません**
204
204
 
205
+ [NetBeans デバッグ方法](http://beginner001.html.xdomain.jp/debug-04.html) 参照
206
+
205
207
 
206
208
 
207
209
  >  
@@ -556,11 +558,13 @@
556
558
 
557
559
  今回のエラーを解決しても、別の不具合が出ます
558
560
 
559
- ホームページのデータ件数 ゼロ
561
+ - ホームページのデータ件数 ゼロ
560
-
562
+
561
- エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
563
+ - エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
562
-
564
+
563
- ログイン機能のデバッグ (or 実装)
565
+ - ログイン機能のデバッグ (or 実装)
566
+
567
+ - 写経 未完成? (ルーティング registerRoutes) **差分ツール図** 参照
564
568
 
565
569
 
566
570
 

26

微調整

2019/08/27 01:58

投稿

退会済みユーザー
test CHANGED
@@ -44,6 +44,8 @@
44
44
 
45
45
  > [パーフェクトPHP をデバッグしました (やる気のある初心者)](https://beginner001.hatenablog.com/entry/2018/12/27/100004)
46
46
 
47
+ > [NetBeans IDE のおかげで理解が飛躍的に](https://blogs.yahoo.co.jp/amegrapsp/41551211.html) (Mac ユーザ が NetBeans IDE を使用)
48
+
47
49
 
48
50
 
49
51
  パーフェクトPHP をデバッグしました (学習方法) や

25

微調整

2019/08/26 09:26

投稿

退会済みユーザー
test CHANGED
@@ -104,27 +104,39 @@
104
104
 
105
105
 
106
106
 
107
- 仕様 (ホームページ表示とログイン)
107
+ サンプルコードの仕様 と orangefarmerさんの仕様 との違い (ホームページ表示とログイン)
108
-
108
+
109
+
110
+
109
- - サンプルコード の仕様
111
+ > サンプルコードの仕様
112
+
113
+ >>
110
114
 
111
115
  - ホームページは、**ログイン後**に表示されます
112
116
 
117
+ >>
118
+
113
119
  - ホームページ (エラー ログ #5 Application->runAction('**status**', '**index**', Array))
114
120
 
115
-  
116
-
121
+
122
+
117
- - orangefarmer さん の仕様
123
+ > orangefarmerさんの仕様
124
+
118
-
125
+ >>
126
+
119
- - **未ログイン**で、ホームページ表示が実行されます (今回は **DB への接続ミス**)
127
+ - **未ログイン**で、ホームページ表示が実行されます (今回は **DB への接続ミス** で 表示は中断)
128
+
129
+ >>
120
130
 
121
131
  - エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**) 本来は、NULLの部分に ログインユーザ ($user['id']) の値がセットされます
122
132
 
133
+ >>
134
+
123
135
  - ログインする 仕様の場合、ホームページ表示前に userテーブル使用で **DB への接続ミス** が発生します
124
136
 
125
-  
126
-
137
+
138
+
127
- - デバッグ対策 **下記** NetBeans ブレークポイント Session 49 参照
139
+ デバッグ対策 **下記** NetBeans ブレークポイント Session 49 参照
128
140
 
129
141
 
130
142
 
@@ -190,21 +202,19 @@
190
202
 
191
203
 
192
204
 
193
- >
205
+ >  
194
-
195
-  
196
-
206
+
197
- デバッグを実行すると、最後に **エラーが再現** されます
207
+ > デバッグを実行すると、最後に **エラーが再現** されます
198
-
208
+
199
- 「正しい」**データベースへの接続設定 (PDO インスタンス)** の **$this->con** を「壊しています」
209
+ > 「正しい」**データベースへの接続設定 (PDO インスタンス)** の **$this->con** を「壊しています」
200
-
210
+
201
- (DbRepository 41* **$this->con** false に変更)
211
+ > (DbRepository 41* **$this->con** false に変更)
202
-
203
-  
204
-
205
- エラーの原因は、**DB への接続ミス**です
212
+
206
-
207
- >
213
+ >  
214
+
215
+ > エラーの原因は、**DB への接続ミス**です
216
+
217
+ >  
208
218
 
209
219
 
210
220
 
@@ -496,7 +506,7 @@
496
506
 
497
507
  **上記 3ファイル の メソッド を調べる**
498
508
 
499
- 上記 3ファイルのうち、orangefarmer さんから コード提示されているのは、
509
+ 3ファイルのうち、orangefarmer さんから コード提示されているのは、
500
510
 
501
511
  MiniBlogApplication.php のみ
502
512
 
@@ -508,7 +518,7 @@
508
518
 
509
519
 
510
520
 
511
- (MiniBlogApplication.php にエラーがあったので、必要無くなった)
521
+ (MiniBlogApplication.php にエラーがあったので、コードの提示は必要無くなった)
512
522
 
513
523
 
514
524
 
@@ -558,15 +568,15 @@
558
568
 
559
569
 
560
570
 
561
- >
571
+ >  
562
-
563
-  
564
-
572
+
565
- NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
573
+ > NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
574
+
566
-
575
+ > 処理の流れ と 変数の値 が分かることで
576
+
567
- 「フレームワークの内部」と「オブジェクト指向」を理解するために使用します
577
+ > 「フレームワークの内部」と「オブジェクト指向」を理解するために使ます
568
-
578
+
569
- >
579
+ >  
570
580
 
571
581
 
572
582
 
@@ -624,7 +634,7 @@
624
634
 
625
635
  Application の **空** の co**n**figure メソッド
626
636
 
627
- エラーが無ければ MiniBlogApplication の **データベースへの接続設定** が Application に反映され
637
+ エラーが無ければ MiniBlogApplication の **データベースへの接続設定** が Application に反映されます
628
638
 
629
639
  ` protected function configure()` ← co**n**figure
630
640
 

24

微調整

2019/08/26 02:12

投稿

退会済みユーザー
test CHANGED
@@ -30,43 +30,531 @@
30
30
 
31
31
 
32
32
 
33
+ > [パーフェクトPHP デバッグ (処理の流れ | ユーザ登録機能作成)](http://beginner001.html.xdomain.jp/debug-02-1.html)
34
+
35
+  [パーフェクトPHP デバッグ (チェックポイント)](http://beginner001.html.xdomain.jp/debug-01.html)
36
+
37
+ > [パーフェクトPHP デバッグ (その他)](http://beginner001.html.xdomain.jp/debug-03.html) (具体的な 環境設定手順)
38
+
39
+ > [パーフェクトPHP デバッグ (**NetBeans デバッグ方法**)](http://beginner001.html.xdomain.jp/debug-04.html) (具体的な デバッグ例)
40
+
41
+ >  
42
+
43
+ > [パーフェクトPHP をデバッグしました (学習方法)](https://beginner001.hatenablog.com/entry/2018/12/27/100003)
44
+
45
+ > [パーフェクトPHP をデバッグしました (やる気のある初心者)](https://beginner001.hatenablog.com/entry/2018/12/27/100004)
46
+
47
+
48
+
49
+ パーフェクトPHP をデバッグしました (学習方法) や
50
+
51
+ パーフェクトPHP をデバッグしました (やる気のある初心者) に
52
+
53
+ 書いてありますが、**「写経」はおすすめしません。**
54
+
55
+
56
+
57
+  
58
+
59
+ **【パーフェクトPHP デバッグ 動作環境】**
60
+
61
+ ・XAMPP 5.6.31
62
+
63
+ ・NetBeans 8.2
64
+
65
+
66
+
67
+ > **学習環境**なので XAMPP 7.x.x (PHP 7.x.x) にする必要はありません。
68
+
69
+ > XAMPP 7.x.x でも動作しますが、**Xdebug** の準備が必要です。
70
+
71
+ > [XAMPP 7.1.14 と NetBeans IDE 8.2 の不具合](http://beginner001.html.xdomain.jp/debug-03.html#PHP7)
72
+
73
+ >  
74
+
75
+ > サンプルコードは、フレームワークの **使い方** ではなく、
76
+
77
+ > フレームワークとオブジェクト指向の **考え方** について書かれているので
78
+
79
+ **バージョンは、関係ありません。**
80
+
81
+
82
+
83
+ ---
84
+
85
+
86
+
87
+ ####NetBeans デバッグ方法
88
+
89
+
90
+
91
+ **【エラーの原因】**
92
+
93
+
94
+
95
+ **NetBeans IDE デバッグ機能** を使った デバッグ です。
96
+
97
+
98
+
99
+ 注意点
100
+
101
+ - 公式サイト サンプルコード(mini-blog.zip) を使用 (不具合 2ヶ所修正)
102
+
103
+ - デバッグ中の変数の**変更**は、**メモリ上**です (ファイルは元のまま)
104
+
105
+
106
+
107
+ 仕様 (ホームページ表示とログイン)
108
+
109
+ - サンプルコード の仕様
110
+
111
+ - ホームページは、**ログイン後**に表示されます
112
+
113
+ - ホームページ (エラー ログ #5 Application->runAction('**status**', '**index**', Array))
114
+
115
+  
116
+
117
+ - orangefarmer さん の仕様
118
+
119
+ - **未ログイン**で、ホームページ表示が実行されます (今回は **DB への接続ミス**)
120
+
121
+ - エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**) 本来は、NULLの部分に ログインユーザ ($user['id']) の値がセットされます
122
+
123
+ - ログインする 仕様の場合、ホームページ表示前に userテーブル使用で **DB への接続ミス** が発生します
124
+
125
+  
126
+
127
+ - デバッグ対策 **下記** NetBeans ブレークポイント Session 49 参照
128
+
129
+
130
+
131
+ 参考
132
+
133
+ - [処理の流れ | ホームページと投稿](http://beginner001.html.xdomain.jp/debug-02-2.html)
134
+
135
+ - [処理の流れ | アカウント情報管理とログイン](http://beginner001.html.xdomain.jp/debug-02-4.html)
136
+
137
+
138
+
139
+
140
+
141
+ エラー ログ
142
+
143
+ - #5 Application->runAction('**status**', '**index**', Array))
144
+
145
+ - #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
146
+
147
+ ```
148
+
149
+ #6 C:\xampp\htdocs\php-blog.localhost\web\index_dev.php(7): Application->run()
150
+
151
+ #5 C:\xampp\htdocs\php-blog.localhost\core\Application.php(103): Application->runAction('status', 'index', Array)
152
+
153
+ #4 C:\xampp\htdocs\php-blog.localhost\core\Application.php(123): Controller->run('index', Array)
154
+
155
+ #3 C:\xampp\htdocs\php-blog.localhost\core\Controller.php(41): StatusController->indexAction(Array)
156
+
157
+ #2 C:\xampp\htdocs\php-blog.localhost\controllers\StatusController.php(8): StatusRepository->fetchAllPersonalArchivesByUserId(NULL)
158
+
159
+ #1 C:\xampp\htdocs\php-blog.localhost\models\StatusRepository.php(22): DbRepository->fetchAll('select a.*, u.u...', Array)
160
+
161
+ #0 C:\xampp\htdocs\php-blog.localhost\core\DbRepository.php(32): DbRepository->execute('select a.*, u.u...', Array)
162
+
163
+
164
+
165
+ Fatal error: Call to a member function prepare() on bool
166
+
167
+ ```
168
+
169
+
170
+
171
+  
172
+
173
+ NetBeans **ブレークポイント** (3ヶ所設定 *) と **処理順序**
174
+
175
+ |PHP|行|内容|次のアクション|
176
+
177
+ |:--|--:|:--|:--|
178
+
179
+ |Application|184*|$controller("status"), $action("index")|続行 (F5)|
180
+
181
+ |Session|103*|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
182
+
183
+ |Session|49 |$default true に変更 (**上記** 仕様)|続行 (F5)|
184
+
185
+ |DbRepository|41*|$this->con false に変更|続行 (F5)|
186
+
187
+
188
+
189
+ **注 Session 49 は、ブレークポイントではありません**
190
+
191
+
192
+
33
193
  >
34
194
 
35
195
   
36
196
 
37
- [パーフェクトPHP デバッグ (処理の流 | ユーザ登録機能作成)](http://beginner001.html.xdomain.jp/debug-02-1.html)
197
+ デバッグを実行すると、最後に **エラーが再現** さます
38
-
198
+
39
-  [パフェクトPHP デバッグ (チェックポイン)](http://beginner001.html.xdomain.jp/debug-01.html)
199
+ 「正しい」**デタベースへの接続設定 (PDO インスタンス)** の **$this->con** を「壊しています」
40
-
200
+
41
- [パーフェクトPHP デバッグ (その他)](http://beginner001.html.xdomain.jp/debug-03.html) (具体的な 環境設定手順)
201
+ (DbRepository 41* **$this->con** false に変更)
42
-
202
+
203
+  
204
+
43
- [パフェクトPHP デバッグ (**NetBeans デバッグ方法**)](http://beginner001.html.xdomain.jp/debug-04.html) (具体的な デバッグ例)
205
+ エラの原因は、**DB への接続ミス**です
44
-
45
-  
46
-
47
- [パーフェクトPHP をデバッグしました (学習方法)](https://beginner001.hatenablog.com/entry/2018/12/27/100003)
48
-
49
- [パーフェクトPHP をデバッグしました (やる気のある初心者)](https://beginner001.hatenablog.com/entry/2018/12/27/100004)
50
206
 
51
207
  >
52
208
 
53
209
 
54
210
 
55
- パーフェクトPHP をデバッグしました (学習方法) や
56
-
57
- パーフェクトPHP をデバッグしました (やる気のある初心者) に
58
-
59
- 書いてありますが、**「写経」はおすすめしません。**
60
-
61
-
62
-
63
-  
64
-
65
- **【パーフェクトPHP デバッグ 動作環境】**
66
-
67
- ・XAMPP 5.6.31
68
-
69
- ・NetBeans 8.2
211
+ Application.php
212
+
213
+ ```PHP
214
+
215
+ ...
216
+
217
+ 173 public function run()
218
+
219
+ 174 {
220
+
221
+ 175 try {
222
+
223
+ 176 $params = $this->router->resolve($this->request->getPathInfo());
224
+
225
+ 177 if ($params === false) {
226
+
227
+ 178 throw new HttpNotFoundException('No route found for ' . $this->request->getPathInfo());
228
+
229
+ 179 }
230
+
231
+ 180
232
+
233
+ 181 $controller = $params['controller'];
234
+
235
+ 182 $action = $params['action'];
236
+
237
+ 183
238
+
239
+ 184* $this->runAction($controller, $action, $params); /* ブレークポイント */
240
+
241
+ 185 } catch (HttpNotFoundException $e) {
242
+
243
+ 186 $this->render404Page($e);
244
+
245
+ 187 } catch (UnauthorizedActionException $e) {
246
+
247
+ 188 list($controller, $action) = $this->login_action;
248
+
249
+ 189 $this->runAction($controller, $action);
250
+
251
+ 190 }
252
+
253
+ 191
254
+
255
+ ...
256
+
257
+ ```
258
+
259
+
260
+
261
+  
262
+
263
+ Session.php
264
+
265
+ ```PHP
266
+
267
+ ...
268
+
269
+ 43 public function get($name, $default = null)
270
+
271
+ 44 {
272
+
273
+ 45 if (isset($_SESSION[$name])) {
274
+
275
+ 46 return $_SESSION[$name];
276
+
277
+ 47 }
278
+
279
+ 48
280
+
281
+ 49 return $default; /* $default true に変更 */
282
+
283
+ 50 }
284
+
285
+ ...
286
+
287
+ 101 public function isAuthenticated()
288
+
289
+ 102 {
290
+
291
+ 103* return $this->get('_authenticated', false); /* ブレークポイント */
292
+
293
+ 104 }
294
+
295
+ ...
296
+
297
+ ```
298
+
299
+
300
+
301
+  
302
+
303
+ DbRepository.php
304
+
305
+ ```PHP
306
+
307
+ ...
308
+
309
+ 39 public function execute($sql, $params = array())
310
+
311
+ 40 {
312
+
313
+ 41* $stmt = $this->con->prepare($sql); /* ブレークポイント $this->con false に変更 */
314
+
315
+ 42 $stmt->execute($params);
316
+
317
+ 43
318
+
319
+ 44 return $stmt;
320
+
321
+ 45 }
322
+
323
+ ...
324
+
325
+ ```
326
+
327
+
328
+
329
+ ---
330
+
331
+
332
+
333
+ **【コードを調べる】**
334
+
335
+
336
+
337
+ 「**DB への接続** のスタートである」"**new PDO**" を検索 検索ツール(Devas)
338
+
339
+ |ファイル|メソッド|
340
+
341
+ |:--|:--|
342
+
343
+ |DbManager.php |public function **connect(**$name, $params)|
344
+
345
+
346
+
347
+  
348
+
349
+ "**connect(**" を検索 検索ツール(Devas)
350
+
351
+ |ファイル|メソッド|
352
+
353
+ |:--|:--|
354
+
355
+ |MiniBlogApplication.php|protected function **configure(**)|
356
+
357
+ |~~DbManager.php~~|~~public function connect($name, $params)~~ 同上|
358
+
359
+
360
+
361
+  
362
+
363
+ "**configure(**" を検索 検索ツール(Devas)
364
+
365
+ |ファイル|メソッド|
366
+
367
+ |:--|:--|
368
+
369
+ |~~MiniBlogApplication.php~~|~~protected function configure()~~ 同上|
370
+
371
+ |Application.php|public function __construct($debug = false)|
372
+
373
+ |Application.php|protected function configure()|
374
+
375
+
376
+
377
+  
378
+
379
+ DbManager.php
380
+
381
+ ```PHP
382
+
383
+ ...
384
+
385
+ 20 public function connect($name, $params)
386
+
387
+ 21 {
388
+
389
+ 22 $params = array_merge(array(
390
+
391
+ 23 'dsn' => null,
392
+
393
+ 24 'user' => '',
394
+
395
+ 25 'password' => '',
396
+
397
+ 26 'options' => array(),
398
+
399
+ 27 ), $params);
400
+
401
+ 28
402
+
403
+ 29 $con = new PDO( /* "new PDO" を検索 */
404
+
405
+ 30 $params['dsn'],
406
+
407
+ 31 $params['user'],
408
+
409
+ 32 $params['password'],
410
+
411
+ 33 $params['options']
412
+
413
+ 34 );
414
+
415
+ 35
416
+
417
+ 36 $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
418
+
419
+ 37
420
+
421
+ 38 $this->connections[$name] = $con;
422
+
423
+ 39 }
424
+
425
+ ...
426
+
427
+ ```
428
+
429
+
430
+
431
+  
432
+
433
+ MiniBlogApplication.php
434
+
435
+ ```PHP
436
+
437
+ ...
438
+
439
+ 37 protected function configure()
440
+
441
+ 38 {
442
+
443
+ 39 $this->db_manager->connect('master', array(
444
+
445
+ 40 'dsn' => 'mysql:dbname=mini_blog;host=localhost;charset=utf8',
446
+
447
+ 41 'user' => 'root',
448
+
449
+ 42 'password' => '',
450
+
451
+ 43 ));
452
+
453
+ 44 }
454
+
455
+ ...
456
+
457
+ ```
458
+
459
+
460
+
461
+  
462
+
463
+ Application.php
464
+
465
+ ```PHP
466
+
467
+ ...
468
+
469
+ 21 public function __construct($debug = false)
470
+
471
+ 22 {
472
+
473
+ 23 $this->setDebugMode($debug);
474
+
475
+ 24 $this->initialize();
476
+
477
+ 25 $this->configure();
478
+
479
+ 26 }
480
+
481
+ ...
482
+
483
+ 60 protected function configure()
484
+
485
+ 61 {
486
+
487
+ 62 }
488
+
489
+ ...
490
+
491
+ ```
492
+
493
+
494
+
495
+  
496
+
497
+ **上記 3ファイル の メソッド を調べる**
498
+
499
+ 上記 3ファイルのうち、orangefarmer さんから コード提示されているのは、
500
+
501
+ MiniBlogApplication.php のみ
502
+
503
+
504
+
505
+ MiniBlogApplication.php に**エラーが無い場合**
506
+
507
+ DbManager.php と Application.php のコード提示をしてもらう予定
508
+
509
+
510
+
511
+ (MiniBlogApplication.php にエラーがあったので、必要無くなった)
512
+
513
+
514
+
515
+ ---
516
+
517
+
518
+
519
+ **【修正箇所が分かる & NetBeans IDE デバッグ機能】**
520
+
521
+
522
+
523
+ 差分ツール (WinMerge) で
524
+
525
+ サンプルコード の MiniBlogApplication.php と orangefarmer さんの MiniBlogApplication.php を比較する
526
+
527
+
528
+
529
+
530
+
531
+ ![MiniBlogApplication.php の比較](c26d5241bd8a86a8dfe542b1a5973cd8.jpeg)
532
+
533
+ クリックすると、拡大表示します
534
+
535
+
536
+
537
+ 正 protected function co**n**figure()
538
+
539
+ 誤 protected function cofigure()
540
+
541
+
542
+
543
+  
544
+
545
+ 今回のエラーを解決しても、別の不具合が出ます
546
+
547
+ ・ホームページのデータ件数 ゼロ
548
+
549
+ ・エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
550
+
551
+ ・ログイン機能のデバッグ (or 実装)
552
+
553
+
554
+
555
+ すべての写経のエラーを解決しても、フレームワークの内部とオブジェクト指向は理解できません
556
+
557
+ ##### NetBeans IDE デバッグ機能 使って「フレームワークの内部」と「オブジェクト指向」を理解しましょう (ダウンロードした サンプルコード 使用)
70
558
 
71
559
 
72
560
 
@@ -74,522 +562,22 @@
74
562
 
75
563
   
76
564
 
77
- **学習環境**なので XAMPP 7.x.x (PHP 7.x.x) にする必要はありません。
78
-
79
- XAMPP 7.x.x でも動作しますが、**Xdebug** の準備が必要です。
80
-
81
- [XAMPP 7.1.14 と NetBeans IDE 8.2 の不具合](http://beginner001.html.xdomain.jp/debug-03.html#PHP7)
82
-
83
-  
84
-
85
- サンプルコードは、フレームワークの **使い方** ではなく
565
+ NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
86
-
566
+
87
- フレームワークとオブジェクト指向の **考え方** ついて書かれているので
567
+ フレームワークの内部」オブジェクト指向」を理解するため使用します
88
-
89
- **バージョンは、関係ありません。**
90
568
 
91
569
  >
92
570
 
93
571
 
94
572
 
573
+ 詳細は、**参考サイトのリンク** をご覧ください
574
+
575
+
576
+
95
577
  ---
96
578
 
97
579
 
98
580
 
99
- ####NetBeans デバッグ方法
100
-
101
-
102
-
103
- **【エラーの原因】**
104
-
105
-
106
-
107
- **NetBeans IDE デバッグ機能** を使った デバッグ です。
108
-
109
-
110
-
111
- 注意点
112
-
113
- - 公式サイト サンプルコード(mini-blog.zip) を使用 (不具合 2ヶ所修正)
114
-
115
- - デバッグ中の変数の**変更**は、**メモリ上**です (ファイルは元のまま)
116
-
117
-
118
-
119
- 仕様 (ホームページ表示とログイン)
120
-
121
- - サンプルコード の仕様
122
-
123
- - ホームページは、**ログイン後**に表示されます
124
-
125
- - ホームページ (エラー ログ #5 Application->runAction('**status**', '**index**', Array))
126
-
127
-  
128
-
129
- - orangefarmer さん の仕様
130
-
131
- - **未ログイン**で、ホームページ表示が実行されます (今回は **DB への接続ミス**)
132
-
133
- - エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**) 本来は、NULLの部分に ログインユーザ ($user['id']) の値がセットされます
134
-
135
- - ログインする 仕様の場合、ホームページ表示前に userテーブル使用で **DB への接続ミス** が発生します
136
-
137
-  
138
-
139
- - デバッグ対策 **下記** NetBeans ブレークポイント Session 49 参照
140
-
141
-
142
-
143
- 参考
144
-
145
- - [処理の流れ | ホームページと投稿](http://beginner001.html.xdomain.jp/debug-02-2.html)
146
-
147
- - [処理の流れ | アカウント情報管理とログイン](http://beginner001.html.xdomain.jp/debug-02-4.html)
148
-
149
-
150
-
151
-
152
-
153
- エラー ログ
154
-
155
- - #5 Application->runAction('**status**', '**index**', Array))
156
-
157
- - #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
158
-
159
- ```
160
-
161
- #6 C:\xampp\htdocs\php-blog.localhost\web\index_dev.php(7): Application->run()
162
-
163
- #5 C:\xampp\htdocs\php-blog.localhost\core\Application.php(103): Application->runAction('status', 'index', Array)
164
-
165
- #4 C:\xampp\htdocs\php-blog.localhost\core\Application.php(123): Controller->run('index', Array)
166
-
167
- #3 C:\xampp\htdocs\php-blog.localhost\core\Controller.php(41): StatusController->indexAction(Array)
168
-
169
- #2 C:\xampp\htdocs\php-blog.localhost\controllers\StatusController.php(8): StatusRepository->fetchAllPersonalArchivesByUserId(NULL)
170
-
171
- #1 C:\xampp\htdocs\php-blog.localhost\models\StatusRepository.php(22): DbRepository->fetchAll('select a.*, u.u...', Array)
172
-
173
- #0 C:\xampp\htdocs\php-blog.localhost\core\DbRepository.php(32): DbRepository->execute('select a.*, u.u...', Array)
174
-
175
-
176
-
177
- Fatal error: Call to a member function prepare() on bool
178
-
179
- ```
180
-
181
-
182
-
183
-  
184
-
185
- NetBeans **ブレークポイント** (3ヶ所設定 *) と **処理順序**
186
-
187
- |PHP|行|内容|次のアクション|
188
-
189
- |:--|--:|:--|:--|
190
-
191
- |Application|184*|$controller("status"), $action("index")|続行 (F5)|
192
-
193
- |Session|103*|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
194
-
195
- |Session|49 |$default true に変更 (**上記** 仕様)|続行 (F5)|
196
-
197
- |DbRepository|41*|$this->con false に変更|続行 (F5)|
198
-
199
-
200
-
201
- **注 Session 49 は、ブレークポイントではありません**
202
-
203
-
204
-
205
- >
206
-
207
-  
208
-
209
- デバッグを実行すると、最後に **エラーが再現** されます
210
-
211
- 「正しい」**データベースへの接続設定 (PDO インスタンス)** の **$this->con** を「壊しています」
212
-
213
- (DbRepository 41* **$this->con** false に変更)
214
-
215
-  
216
-
217
- エラーの原因は、**DB への接続ミス**です
218
-
219
- >
220
-
221
-
222
-
223
- Application.php
224
-
225
- ```PHP
226
-
227
- ...
228
-
229
- 173 public function run()
230
-
231
- 174 {
232
-
233
- 175 try {
234
-
235
- 176 $params = $this->router->resolve($this->request->getPathInfo());
236
-
237
- 177 if ($params === false) {
238
-
239
- 178 throw new HttpNotFoundException('No route found for ' . $this->request->getPathInfo());
240
-
241
- 179 }
242
-
243
- 180
244
-
245
- 181 $controller = $params['controller'];
246
-
247
- 182 $action = $params['action'];
248
-
249
- 183
250
-
251
- 184* $this->runAction($controller, $action, $params); /* ブレークポイント */
252
-
253
- 185 } catch (HttpNotFoundException $e) {
254
-
255
- 186 $this->render404Page($e);
256
-
257
- 187 } catch (UnauthorizedActionException $e) {
258
-
259
- 188 list($controller, $action) = $this->login_action;
260
-
261
- 189 $this->runAction($controller, $action);
262
-
263
- 190 }
264
-
265
- 191
266
-
267
- ...
268
-
269
- ```
270
-
271
-
272
-
273
-  
274
-
275
- Session.php
276
-
277
- ```PHP
278
-
279
- ...
280
-
281
- 43 public function get($name, $default = null)
282
-
283
- 44 {
284
-
285
- 45 if (isset($_SESSION[$name])) {
286
-
287
- 46 return $_SESSION[$name];
288
-
289
- 47 }
290
-
291
- 48
292
-
293
- 49 return $default; /* $default true に変更 */
294
-
295
- 50 }
296
-
297
- ...
298
-
299
- 101 public function isAuthenticated()
300
-
301
- 102 {
302
-
303
- 103* return $this->get('_authenticated', false); /* ブレークポイント */
304
-
305
- 104 }
306
-
307
- ...
308
-
309
- ```
310
-
311
-
312
-
313
-  
314
-
315
- DbRepository.php
316
-
317
- ```PHP
318
-
319
- ...
320
-
321
- 39 public function execute($sql, $params = array())
322
-
323
- 40 {
324
-
325
- 41* $stmt = $this->con->prepare($sql); /* ブレークポイント $this->con false に変更 */
326
-
327
- 42 $stmt->execute($params);
328
-
329
- 43
330
-
331
- 44 return $stmt;
332
-
333
- 45 }
334
-
335
- ...
336
-
337
- ```
338
-
339
-
340
-
341
- ---
342
-
343
-
344
-
345
- **【コードを調べる】**
346
-
347
-
348
-
349
- 「**DB への接続** のスタートである」"**new PDO**" を検索 検索ツール(Devas)
350
-
351
- |ファイル|メソッド|
352
-
353
- |:--|:--|
354
-
355
- |DbManager.php |public function **connect(**$name, $params)|
356
-
357
-
358
-
359
-  
360
-
361
- "**connect(**" を検索 検索ツール(Devas)
362
-
363
- |ファイル|メソッド|
364
-
365
- |:--|:--|
366
-
367
- |MiniBlogApplication.php|protected function **configure(**)|
368
-
369
- |~~DbManager.php~~|~~public function connect($name, $params)~~ 同上|
370
-
371
-
372
-
373
-  
374
-
375
- "**configure(**" を検索 検索ツール(Devas)
376
-
377
- |ファイル|メソッド|
378
-
379
- |:--|:--|
380
-
381
- |~~MiniBlogApplication.php~~|~~protected function configure()~~ 同上|
382
-
383
- |Application.php|public function __construct($debug = false)|
384
-
385
- |Application.php|protected function configure()|
386
-
387
-
388
-
389
-  
390
-
391
- DbManager.php
392
-
393
- ```PHP
394
-
395
- ...
396
-
397
- 20 public function connect($name, $params)
398
-
399
- 21 {
400
-
401
- 22 $params = array_merge(array(
402
-
403
- 23 'dsn' => null,
404
-
405
- 24 'user' => '',
406
-
407
- 25 'password' => '',
408
-
409
- 26 'options' => array(),
410
-
411
- 27 ), $params);
412
-
413
- 28
414
-
415
- 29 $con = new PDO( /* "new PDO" を検索 */
416
-
417
- 30 $params['dsn'],
418
-
419
- 31 $params['user'],
420
-
421
- 32 $params['password'],
422
-
423
- 33 $params['options']
424
-
425
- 34 );
426
-
427
- 35
428
-
429
- 36 $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
430
-
431
- 37
432
-
433
- 38 $this->connections[$name] = $con;
434
-
435
- 39 }
436
-
437
- ...
438
-
439
- ```
440
-
441
-
442
-
443
-  
444
-
445
- MiniBlogApplication.php
446
-
447
- ```PHP
448
-
449
- ...
450
-
451
- 37 protected function configure()
452
-
453
- 38 {
454
-
455
- 39 $this->db_manager->connect('master', array(
456
-
457
- 40 'dsn' => 'mysql:dbname=mini_blog;host=localhost;charset=utf8',
458
-
459
- 41 'user' => 'root',
460
-
461
- 42 'password' => '',
462
-
463
- 43 ));
464
-
465
- 44 }
466
-
467
- ...
468
-
469
- ```
470
-
471
-
472
-
473
-  
474
-
475
- Application.php
476
-
477
- ```PHP
478
-
479
- ...
480
-
481
- 21 public function __construct($debug = false)
482
-
483
- 22 {
484
-
485
- 23 $this->setDebugMode($debug);
486
-
487
- 24 $this->initialize();
488
-
489
- 25 $this->configure();
490
-
491
- 26 }
492
-
493
- ...
494
-
495
- 60 protected function configure()
496
-
497
- 61 {
498
-
499
- 62 }
500
-
501
- ...
502
-
503
- ```
504
-
505
-
506
-
507
-  
508
-
509
- **上記 3ファイル の メソッド を調べる**
510
-
511
- 上記 3ファイルのうち、orangefarmer さんから コード提示されているのは、
512
-
513
- MiniBlogApplication.php のみ
514
-
515
-
516
-
517
- MiniBlogApplication.php に**エラーが無い場合**
518
-
519
- DbManager.php と Application.php のコード提示をしてもらう予定
520
-
521
-
522
-
523
- (MiniBlogApplication.php にエラーがあったので、必要無くなった)
524
-
525
-
526
-
527
- ---
528
-
529
-
530
-
531
- **【修正箇所が分かる & NetBeans IDE デバッグ機能】**
532
-
533
-
534
-
535
- 差分ツール (WinMerge) で
536
-
537
- サンプルコード の MiniBlogApplication.php と orangefarmer さんの MiniBlogApplication.php を比較する
538
-
539
-
540
-
541
-
542
-
543
- ![MiniBlogApplication.php の比較](c26d5241bd8a86a8dfe542b1a5973cd8.jpeg)
544
-
545
- クリックすると、拡大表示します
546
-
547
-
548
-
549
- 正 protected function co**n**figure()
550
-
551
- 誤 protected function cofigure()
552
-
553
-
554
-
555
-  
556
-
557
- 今回のエラーを解決しても、別の不具合が出ます
558
-
559
- ・ホームページのデータ件数 ゼロ
560
-
561
- ・エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
562
-
563
- ・ログイン機能のデバッグ (or 実装)
564
-
565
-
566
-
567
- すべての写経のエラーを解決しても、フレームワークの内部とオブジェクト指向は理解できません
568
-
569
- ##### NetBeans IDE デバッグ機能 使って「フレームワークの内部」と「オブジェクト指向」を理解しましょう (ダウンロードした サンプルコード 使用)
570
-
571
-
572
-
573
- >
574
-
575
-  
576
-
577
- NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
578
-
579
- 「フレームワークの内部」と「オブジェクト指向」を理解するために使用します
580
-
581
- >
582
-
583
-
584
-
585
- 詳細は、**参考サイトのリンク** をご覧ください
586
-
587
-
588
-
589
- ---
590
-
591
-
592
-
593
581
  【エラーの理由】
594
582
 
595
583
 

23

微調整

2019/08/26 00:53

投稿

退会済みユーザー
test CHANGED
@@ -30,23 +30,27 @@
30
30
 
31
31
 
32
32
 
33
+ >
34
+
35
+  
36
+
33
37
  [パーフェクトPHP デバッグ (処理の流れ | ユーザ登録機能作成)](http://beginner001.html.xdomain.jp/debug-02-1.html)
34
38
 
35
- [パーフェクトPHP デバッグ (チェックポイント)](http://beginner001.html.xdomain.jp/debug-01.html)
39
+  [パーフェクトPHP デバッグ (チェックポイント)](http://beginner001.html.xdomain.jp/debug-01.html)
36
40
 
37
41
  [パーフェクトPHP デバッグ (その他)](http://beginner001.html.xdomain.jp/debug-03.html) (具体的な 環境設定手順)
38
42
 
39
43
  [パーフェクトPHP デバッグ (**NetBeans デバッグ方法**)](http://beginner001.html.xdomain.jp/debug-04.html) (具体的な デバッグ例)
40
44
 
41
-
45
+  
42
46
 
43
47
  [パーフェクトPHP をデバッグしました (学習方法)](https://beginner001.hatenablog.com/entry/2018/12/27/100003)
44
48
 
45
49
  [パーフェクトPHP をデバッグしました (やる気のある初心者)](https://beginner001.hatenablog.com/entry/2018/12/27/100004)
46
50
 
47
-
48
-
49
- 上記リンクの
51
+ >
52
+
53
+
50
54
 
51
55
  パーフェクトPHP をデバッグしました (学習方法) や
52
56
 
@@ -66,13 +70,17 @@
66
70
 
67
71
 
68
72
 
73
+ >
74
+
75
+  
76
+
69
77
  **学習環境**なので XAMPP 7.x.x (PHP 7.x.x) にする必要はありません。
70
78
 
71
79
  XAMPP 7.x.x でも動作しますが、**Xdebug** の準備が必要です。
72
80
 
73
81
  [XAMPP 7.1.14 と NetBeans IDE 8.2 の不具合](http://beginner001.html.xdomain.jp/debug-03.html#PHP7)
74
82
 
75
-
83
+  
76
84
 
77
85
  サンプルコードは、フレームワークの **使い方** ではなく、
78
86
 
@@ -80,6 +88,8 @@
80
88
 
81
89
  **バージョンは、関係ありません。**
82
90
 
91
+ >
92
+
83
93
 
84
94
 
85
95
  ---

22

微調整

2019/08/26 00:40

投稿

退会済みユーザー
test CHANGED
@@ -336,7 +336,7 @@
336
336
 
337
337
 
338
338
 
339
- "**new PDO**" を検索 検索ツール(Devas)
339
+ 「**DB への接続** のスタートである」"**new PDO**" を検索 検索ツール(Devas)
340
340
 
341
341
  |ファイル|メソッド|
342
342
 
@@ -626,6 +626,8 @@
626
626
 
627
627
  Application の **空** の co**n**figure メソッド
628
628
 
629
+ エラーが無ければ MiniBlogApplication の **データベースへの接続設定** が Application に反映される
630
+
629
631
  ` protected function configure()` ← co**n**figure
630
632
 
631
633
  ` {`

21

微調整

2019/08/25 06:23

投稿

退会済みユーザー
test CHANGED
@@ -576,18 +576,6 @@
576
576
 
577
577
 
578
578
 
579
- >
580
-
581
-  
582
-
583
- 経験者「デバッグ環境を作ってください」
584
-
585
- 初心者「分かりました」 (... 作り方が分からない?) (... 作れなかった!)
586
-
587
- >
588
-
589
-
590
-
591
579
  ---
592
580
 
593
581
 

20

微調整

2019/08/25 03:59

投稿

退会済みユーザー
test CHANGED
@@ -178,13 +178,13 @@
178
178
 
179
179
  |:--|--:|:--|:--|
180
180
 
181
- |Application|*184|$controller("status"), $action("index")|続行 (F5)|
181
+ |Application|184*|$controller("status"), $action("index")|続行 (F5)|
182
-
182
+
183
- |Session|*103|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
183
+ |Session|103*|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
184
-
184
+
185
- |Session|49|$default true に変更 (**上記** 仕様)|続行 (F5)|
185
+ |Session|49 |$default true に変更 (**上記** 仕様)|続行 (F5)|
186
-
186
+
187
- |DbRepository|*41|$this->con false に変更|続行 (F5)|
187
+ |DbRepository|41*|$this->con false に変更|続行 (F5)|
188
188
 
189
189
 
190
190
 
@@ -192,19 +192,23 @@
192
192
 
193
193
 
194
194
 
195
+ >
196
+
197
+  
198
+
195
199
  デバッグを実行すると、最後に **エラーが再現** されます
196
200
 
197
- 正しい **データベースへの接続設定 (PDO インスタンス)** の $this->con を「壊しています」
201
+ 正しい**データベースへの接続設定 (PDO インスタンス)** の **$this->con** を「壊しています」
198
-
202
+
199
- (DbRepository *41 **$this->con** false)
203
+ (DbRepository 41* **$this->con** false に変更)
200
-
201
-
204
+
205
+  
202
206
 
203
207
  エラーの原因は、**DB への接続ミス**です
204
208
 
205
-
209
+ >
206
-
207
-  
210
+
211
+
208
212
 
209
213
  Application.php
210
214
 
@@ -234,7 +238,7 @@
234
238
 
235
239
  183
236
240
 
237
- 184 $this->runAction($controller, $action, $params); /* ブレークポイント */
241
+ 184* $this->runAction($controller, $action, $params); /* ブレークポイント */
238
242
 
239
243
  185 } catch (HttpNotFoundException $e) {
240
244
 
@@ -286,7 +290,7 @@
286
290
 
287
291
  102 {
288
292
 
289
- 103 return $this->get('_authenticated', false); /* ブレークポイント */
293
+ 103* return $this->get('_authenticated', false); /* ブレークポイント */
290
294
 
291
295
  104 }
292
296
 
@@ -308,7 +312,7 @@
308
312
 
309
313
  40 {
310
314
 
311
- 41 $stmt = $this->con->prepare($sql); /* ブレークポイント $this->con false に変更 */
315
+ 41* $stmt = $this->con->prepare($sql); /* ブレークポイント $this->con false に変更 */
312
316
 
313
317
  42 $stmt->execute($params);
314
318
 
@@ -504,6 +508,8 @@
504
508
 
505
509
  DbManager.php と Application.php のコード提示をしてもらう予定
506
510
 
511
+
512
+
507
513
  (MiniBlogApplication.php にエラーがあったので、必要無くなった)
508
514
 
509
515
 
@@ -512,7 +518,7 @@
512
518
 
513
519
 
514
520
 
515
- **【修正箇所が分かる】**
521
+ **【修正箇所が分かる & NetBeans IDE デバッグ機能】**
516
522
 
517
523
 
518
524
 
@@ -552,10 +558,36 @@
552
558
 
553
559
  ##### NetBeans IDE デバッグ機能 使って「フレームワークの内部」と「オブジェクト指向」を理解しましょう (ダウンロードした サンプルコード 使用)
554
560
 
561
+
562
+
563
+ >
564
+
565
+  
566
+
567
+ NetBeans IDE デバッグ機能 は、**バグを見つけるためではなく**
568
+
569
+ 「フレームワークの内部」と「オブジェクト指向」を理解するために使用します
570
+
571
+ >
572
+
573
+
574
+
555
575
  詳細は、**参考サイトのリンク** をご覧ください
556
576
 
557
577
 
558
578
 
579
+ >
580
+
581
+  
582
+
583
+ 経験者「デバッグ環境を作ってください」
584
+
585
+ 初心者「分かりました」 (... 作り方が分からない?) (... 作れなかった!)
586
+
587
+ >
588
+
589
+
590
+
559
591
  ---
560
592
 
561
593
 

19

微調整

2019/08/25 01:50

投稿

退会済みユーザー
test CHANGED
@@ -328,7 +328,7 @@
328
328
 
329
329
 
330
330
 
331
- **【ソースコードを調べる】**
331
+ **【コードを調べる】**
332
332
 
333
333
 
334
334
 

18

微調整

2019/08/25 00:19

投稿

退会済みユーザー
test CHANGED
@@ -570,7 +570,7 @@
570
570
 
571
571
 
572
572
 
573
- `class MiniBlogApplication extends Application` ← **extends** (継承)
573
+ `class MiniBlogApplication extends Application` ← **extends** (継承)
574
574
 
575
575
  `{`
576
576
 
@@ -584,7 +584,7 @@
584
584
 
585
585
  MiniBlogApplication の cofigure メソッド
586
586
 
587
- ` protected function cofigure()` ← **オーバライドできない** (co**n**figure でないため)
587
+ ` protected function cofigure()` ← **オーバライドできない** (co**n**figure でないため)
588
588
 
589
589
  ` {` ↓ 以下 **データベースへの接続設定**
590
590
 
@@ -606,7 +606,7 @@
606
606
 
607
607
  Application の **空** の co**n**figure メソッド
608
608
 
609
- ` protected function configure()` ← co**n**figure
609
+ ` protected function configure()` ← co**n**figure
610
610
 
611
611
  ` {`
612
612
 
@@ -626,6 +626,6 @@
626
626
 
627
627
  ` $this->initialize();`
628
628
 
629
- ` $this->configure();` ← **空** のメソッドのまま co**n**figure (データベースへの接続設定 が **未定義**)
629
+ ` $this->configure();` ← **空** のメソッドのまま co**n**figure (データベースへの接続設定 が **未定義**)
630
630
 
631
631
  ` }`

17

微調整

2019/08/24 05:26

投稿

退会済みユーザー
test CHANGED
@@ -502,7 +502,7 @@
502
502
 
503
503
  MiniBlogApplication.php に**エラーが無い場合**
504
504
 
505
- DbManager.php と Application.php のコード提示してもらう予定
505
+ DbManager.php と Application.php のコード提示してもらう予定
506
506
 
507
507
  (MiniBlogApplication.php にエラーがあったので、必要無くなった)
508
508
 

16

微調整

2019/08/23 08:26

投稿

退会済みユーザー
test CHANGED
@@ -82,36 +82,6 @@
82
82
 
83
83
 
84
84
 
85
-  
86
-
87
- **【Windows MAMP】**
88
-
89
- - XAMPP でも同じことができます
90
-
91
-
92
-
93
- **【Macintosh MAMP】**
94
-
95
- - [ついにデバッグの環境が整った](https://blogs.yahoo.co.jp/amegrapsp/41541779.html)
96
-
97
- - [NetBeans IDE のおかげで理解が飛躍的に](https://blogs.yahoo.co.jp/amegrapsp/41551211.html)
98
-
99
- - [ようやく解決の糸口が見つかった](https://blogs.yahoo.co.jp/amegrapsp/41541352.html)
100
-
101
-
102
-
103
- 上のサイトの管理人は、**プログラム初心者** & **NetBeans IDE デバッグ機能 初めて**
104
-
105
- で、「写経」のバグを解決した優秀な方です。
106
-
107
-
108
-
109
- Macintosh MAMP の **Xdebug** についても書かれています。
110
-
111
- 「多分」問合せもできると思います。
112
-
113
-
114
-
115
85
  ---
116
86
 
117
87
 

15

MAMP について 追加

2019/08/23 02:35

投稿

退会済みユーザー
test CHANGED
@@ -68,7 +68,7 @@
68
68
 
69
69
  **学習環境**なので XAMPP 7.x.x (PHP 7.x.x) にする必要はありません。
70
70
 
71
- XAMPP 7.x.x でも動作しますが、Xdebug の準備が必要です。
71
+ XAMPP 7.x.x でも動作しますが、**Xdebug** の準備が必要です。
72
72
 
73
73
  [XAMPP 7.1.14 と NetBeans IDE 8.2 の不具合](http://beginner001.html.xdomain.jp/debug-03.html#PHP7)
74
74
 
@@ -82,6 +82,36 @@
82
82
 
83
83
 
84
84
 
85
+  
86
+
87
+ **【Windows MAMP】**
88
+
89
+ - XAMPP でも同じことができます
90
+
91
+
92
+
93
+ **【Macintosh MAMP】**
94
+
95
+ - [ついにデバッグの環境が整った](https://blogs.yahoo.co.jp/amegrapsp/41541779.html)
96
+
97
+ - [NetBeans IDE のおかげで理解が飛躍的に](https://blogs.yahoo.co.jp/amegrapsp/41551211.html)
98
+
99
+ - [ようやく解決の糸口が見つかった](https://blogs.yahoo.co.jp/amegrapsp/41541352.html)
100
+
101
+
102
+
103
+ 上のサイトの管理人は、**プログラム初心者** & **NetBeans IDE デバッグ機能 初めて**
104
+
105
+ で、「写経」のバグを解決した優秀な方です。
106
+
107
+
108
+
109
+ Macintosh MAMP の **Xdebug** についても書かれています。
110
+
111
+ 「多分」問合せもできると思います。
112
+
113
+
114
+
85
115
  ---
86
116
 
87
117
 

14

微調整

2019/08/22 03:05

投稿

退会済みユーザー
test CHANGED
@@ -112,15 +112,15 @@
112
112
 
113
113
  - ホームページは、**ログイン後**に表示されます
114
114
 
115
- - ホームページ (#5 Application->runAction('**status**', '**index**', Array))
115
+ - ホームページ (エラー ログ #5 Application->runAction('**status**', '**index**', Array))
116
116
 
117
117
   
118
118
 
119
119
  - orangefarmer さん の仕様
120
120
 
121
- - **未ログイン**で、ホームページ表示が実行されます (今回は **DB への接続ミス** のエラー)
121
+ - **未ログイン**で、ホームページ表示が実行されます (今回は **DB への接続ミス**)
122
-
122
+
123
- - #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**) 本来は、NULLの部分に ログインユーザ ($user['id']) の値がセットされます
123
+ - エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**) 本来は、NULLの部分に ログインユーザ ($user['id']) の値がセットされます
124
124
 
125
125
  - ログインする 仕様の場合、ホームページ表示前に userテーブル使用で **DB への接続ミス** が発生します
126
126
 
@@ -142,6 +142,10 @@
142
142
 
143
143
  エラー ログ
144
144
 
145
+ - #5 Application->runAction('**status**', '**index**', Array))
146
+
147
+ - #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
148
+
145
149
  ```
146
150
 
147
151
  #6 C:\xampp\htdocs\php-blog.localhost\web\index_dev.php(7): Application->run()
@@ -190,7 +194,9 @@
190
194
 
191
195
  デバッグを実行すると、最後に **エラーが再現** されます
192
196
 
193
- 正しい **データベースへの接続設定 (PDO インスタンス)** $this->con を壊しています
197
+ 正しい **データベースへの接続設定 (PDO インスタンス)** $this->con を壊しています
198
+
199
+ (DbRepository *41 **$this->con** false)
194
200
 
195
201
 
196
202
 
@@ -534,9 +540,11 @@
534
540
 
535
541
  今回のエラーを解決しても、別の不具合が出ます
536
542
 
537
- ホームページのデータ件数 ゼロ
543
+ ホームページのデータ件数 ゼロ
538
-
544
+
539
- 2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
545
+ ・エラー ログ #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
546
+
547
+ ・ログイン機能のデバッグ (or 実装)
540
548
 
541
549
 
542
550
 
@@ -618,6 +626,6 @@
618
626
 
619
627
  ` $this->initialize();`
620
628
 
621
- ` $this->configure();` ← **空** のメソッド co**n**figure (データベースへの接続設定 が **未定義**)
629
+ ` $this->configure();` ← **空** のメソッドのまま co**n**figure (データベースへの接続設定 が **未定義**)
622
630
 
623
631
  ` }`

13

微調整

2019/08/22 01:39

投稿

退会済みユーザー
test CHANGED
@@ -94,7 +94,7 @@
94
94
 
95
95
 
96
96
 
97
- **NetBeans IDE デバッグ機能** を使った デバッグ方法 です。
97
+ **NetBeans IDE デバッグ機能** を使った デバッグ です。
98
98
 
99
99
 
100
100
 
@@ -532,21 +532,17 @@
532
532
 
533
533
   
534
534
 
535
- エラーを解決しても、の不具合が出ます
535
+ 今回のエラーを解決しても、の不具合が出ます
536
-
536
+
537
- ホームページのデータ件数は、ゼロです
537
+ ホームページのデータ件数 ゼロ
538
-
538
+
539
- - #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
539
+ 2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
540
-
541
-
542
-
540
+
541
+
542
+
543
- 写経のエラーを解決しても、フレームワークの内部とオブジェクト指向は理解できません
543
+ すべての写経のエラーを解決しても、フレームワークの内部とオブジェクト指向は理解できません
544
-
545
- **ダウンロードした サンプルコード** に変更します
544
+
546
-
547
-
548
-
549
- ##### NetBeans IDE デバッグ機能 使って「フレームワークの内部」と「オブジェクト指向」を理解しま
545
+ ##### NetBeans IDE デバッグ機能 使って「フレームワークの内部」と「オブジェクト指向」を理解しましょう (ダウンロードした サンプルコード 使用)
550
546
 
551
547
  詳細は、**参考サイトのリンク** をご覧ください
552
548
 
@@ -560,10 +556,6 @@
560
556
 
561
557
 
562
558
 
563
- **DB への接続ミス** になる理由です。
564
-
565
-
566
-
567
559
  子クラスのメソッド名 (cofigure) が親クラスのメソッド名 (co**n**figure) と違うために
568
560
 
569
561
  **オーバライド**ができず、**データベースへの接続設定** が**未定義** のためです。

12

サンプルコードの使用

2019/08/21 04:58

投稿

退会済みユーザー
test CHANGED
@@ -122,11 +122,11 @@
122
122
 
123
123
  - #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**) 本来は、NULLの部分に ログインユーザ ($user['id']) の値がセットされます
124
124
 
125
- - ログインする仕様の場合、ホームページ表示前に userテーブル使用で **DB への接続ミス** が発生します
125
+ - ログインする 仕様の場合、ホームページ表示前に userテーブル使用で **DB への接続ミス** が発生します
126
-
127
-  
128
-
126
+
127
+  
128
+
129
- - 対策 **下記** NetBeans ブレークポイント Session.php 49 参照
129
+ - デバッグ対策 **下記** NetBeans ブレークポイント Session 49 参照
130
130
 
131
131
 
132
132
 
@@ -168,29 +168,29 @@
168
168
 
169
169
   
170
170
 
171
- NetBeans **ブレークポイント** (3ヶ所設定) と **処理順序**
171
+ NetBeans **ブレークポイント** (3ヶ所設定 *) と **処理順序**
172
-
172
+
173
- |ファイル    |行No|内容|次のアクション|
173
+ |PHP|行|内容|次のアクション|
174
174
 
175
175
  |:--|--:|:--|:--|
176
176
 
177
- |Application.php|184|$controller("status"), $action("index")|続行 (F5)|
177
+ |Application|*184|$controller("status"), $action("index")|続行 (F5)|
178
-
178
+
179
- |Session.php|103|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
179
+ |Session|*103|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
180
-
180
+
181
- |Session.php|49|$default true に変更 (**上記** 仕様 対策)|続行 (F5)|
181
+ |Session|49|$default true に変更 (**上記** 仕様)|続行 (F5)|
182
-
182
+
183
- |DbRepository.php|41|$this->con false に変更|続行 (F5)|
183
+ |DbRepository|*41|$this->con false に変更|続行 (F5)|
184
-
185
-
186
-
184
+
185
+
186
+
187
- **注 Session.php 49 は、ブレークポイントではありません**
187
+ **注 Session 49 は、ブレークポイントではありません**
188
188
 
189
189
 
190
190
 
191
191
  デバッグを実行すると、最後に **エラーが再現** されます
192
192
 
193
- (正しい **データベースへの接続設定 (PDO インスタンス)** $this->con を壊しています)
193
+ 正しい **データベースへの接続設定 (PDO インスタンス)** $this->con を壊しています
194
194
 
195
195
 
196
196
 
@@ -392,7 +392,7 @@
392
392
 
393
393
  28
394
394
 
395
- 29 $con = new PDO(
395
+ 29 $con = new PDO( /* "new PDO" を検索 */
396
396
 
397
397
  30 $params['dsn'],
398
398
 
@@ -496,7 +496,7 @@
496
496
 
497
497
  MiniBlogApplication.php に**エラーが無い場合**
498
498
 
499
- DbManager.php と Application.php のコード提示してもらう予定です
499
+ DbManager.php と Application.php のコード提示してもらう予定
500
500
 
501
501
  (MiniBlogApplication.php にエラーがあったので、必要無くなった)
502
502
 
@@ -530,6 +530,28 @@
530
530
 
531
531
 
532
532
 
533
+  
534
+
535
+ エラーを解決しても、次の不具合が出ます
536
+
537
+ ホームページのデータ件数は、ゼロです
538
+
539
+ - #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**)
540
+
541
+
542
+
543
+ 写経のエラーを解決しても、フレームワークの内部とオブジェクト指向は理解できません
544
+
545
+ **ダウンロードした サンプルコード** に変更します
546
+
547
+
548
+
549
+ ##### NetBeans IDE デバッグ機能 使って「フレームワークの内部」と「オブジェクト指向」を理解します
550
+
551
+ 詳細は、**参考サイトのリンク** をご覧ください
552
+
553
+
554
+
533
555
  ---
534
556
 
535
557
 

11

微調整

2019/08/21 02:33

投稿

退会済みユーザー
test CHANGED
@@ -194,7 +194,7 @@
194
194
 
195
195
 
196
196
 
197
- 原因は、**DB への接続ミス**です
197
+ エラーの原因は、**DB への接続ミス**です
198
198
 
199
199
 
200
200
 

10

微調整

2019/08/20 07:20

投稿

退会済みユーザー
test CHANGED
@@ -168,19 +168,19 @@
168
168
 
169
169
   
170
170
 
171
- NetBeans **ブレークポイント** (3ヶ所設定 *) と **処理順序**
171
+ NetBeans **ブレークポイント** (3ヶ所設定) と **処理順序**
172
172
 
173
173
  |ファイル    |行No|内容|次のアクション|
174
174
 
175
175
  |:--|--:|:--|:--|
176
176
 
177
- |Application.php|*184|$controller("status"), $action("index")|続行 (F5)|
177
+ |Application.php|184|$controller("status"), $action("index")|続行 (F5)|
178
-
178
+
179
- |Session.php|*103|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
179
+ |Session.php|103|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
180
180
 
181
181
  |Session.php|49|$default true に変更 (**上記** 仕様 対策)|続行 (F5)|
182
182
 
183
- |DbRepository.php|*41|$this->con false に変更|続行 (F5)|
183
+ |DbRepository.php|41|$this->con false に変更|続行 (F5)|
184
184
 
185
185
 
186
186
 

9

微調整

2019/08/20 07:04

投稿

退会済みユーザー
test CHANGED
@@ -108,7 +108,7 @@
108
108
 
109
109
  仕様 (ホームページ表示とログイン)
110
110
 
111
- - サンプルコード 仕様
111
+ - サンプルコード 仕様
112
112
 
113
113
  - ホームページは、**ログイン後**に表示されます
114
114
 
@@ -116,13 +116,13 @@
116
116
 
117
117
   
118
118
 
119
- - orangefarmer さん 仕様
119
+ - orangefarmer さん 仕様
120
-
120
+
121
- - **未ログイン**で、ホームページ表示が実行されます (今回はエラー)
121
+ - **未ログイン**で、ホームページ表示が実行されます (今回は **DB への接続ミス** のエラー)
122
-
122
+
123
- - #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**) (本来は $user['id'] の値がセットされます)
123
+ - #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**) 本来は、NULLの部分に ログインユーザ ($user['id']) の値がセットされます
124
-
124
+
125
- - ログインする仕様だと、表示前に userテーブル使用で **DB への接続ミス** が発生します
125
+ - ログインする仕様の場合ホームページ表示前に userテーブル使用で **DB への接続ミス** が発生します
126
126
 
127
127
   
128
128
 
@@ -168,19 +168,19 @@
168
168
 
169
169
   
170
170
 
171
- NetBeans **ブレークポイント** (3ヶ所設定) と **処理順序**
171
+ NetBeans **ブレークポイント** (3ヶ所設定 *) と **処理順序**
172
172
 
173
173
  |ファイル    |行No|内容|次のアクション|
174
174
 
175
175
  |:--|--:|:--|:--|
176
176
 
177
- |Application.php|184|$controller("status"), $action("index")|続行 (F5)|
177
+ |Application.php|*184|$controller("status"), $action("index")|続行 (F5)|
178
-
178
+
179
- |Session.php|103|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
179
+ |Session.php|*103|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
180
180
 
181
181
  |Session.php|49|$default true に変更 (**上記** 仕様 対策)|続行 (F5)|
182
182
 
183
- |DbRepository.php|41|$this->con false に変更|続行 (F5)|
183
+ |DbRepository.php|*41|$this->con false に変更|続行 (F5)|
184
184
 
185
185
 
186
186
 
@@ -190,6 +190,10 @@
190
190
 
191
191
  デバッグを実行すると、最後に **エラーが再現** されます
192
192
 
193
+ (正しい **データベースへの接続設定 (PDO インスタンス)** $this->con を壊しています)
194
+
195
+
196
+
193
197
  原因は、**DB への接続ミス**です
194
198
 
195
199
 
@@ -224,7 +228,7 @@
224
228
 
225
229
  183
226
230
 
227
- 184 $this->runAction($controller, $action, $params);
231
+ 184 $this->runAction($controller, $action, $params); /* ブレークポイント */
228
232
 
229
233
  185 } catch (HttpNotFoundException $e) {
230
234
 
@@ -266,7 +270,7 @@
266
270
 
267
271
  48
268
272
 
269
- 49 return $default;
273
+ 49 return $default; /* $default true に変更 */
270
274
 
271
275
  50 }
272
276
 
@@ -276,7 +280,7 @@
276
280
 
277
281
  102 {
278
282
 
279
- 103 return $this->get('_authenticated', false);
283
+ 103 return $this->get('_authenticated', false); /* ブレークポイント */
280
284
 
281
285
  104 }
282
286
 
@@ -298,7 +302,7 @@
298
302
 
299
303
  40 {
300
304
 
301
- 41 $stmt = $this->con->prepare($sql);
305
+ 41 $stmt = $this->con->prepare($sql); /* ブレークポイント $this->con false に変更 */
302
306
 
303
307
  42 $stmt->execute($params);
304
308
 
@@ -494,7 +498,7 @@
494
498
 
495
499
  DbManager.php と Application.php のコード提示してもらう予定です
496
500
 
497
- (必要無くなった)
501
+ (MiniBlogApplication.php にエラーがあったので、必要無くなった)
498
502
 
499
503
 
500
504
 

8

調整

2019/08/20 07:03

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,4 @@
1
- ###回答参考サイトの紹介NetBeans デバッグ方法 です
1
+ ###回答』『参考サイトの紹介』『NetBeans デバッグ方法
2
2
 
3
3
 
4
4
 
@@ -30,12 +30,6 @@
30
30
 
31
31
 
32
32
 
33
- 直接の回答ではありません。
34
-
35
- (nullbotさんの好意を無駄にしたくないので...)
36
-
37
-
38
-
39
33
  [パーフェクトPHP デバッグ (処理の流れ | ユーザ登録機能作成)](http://beginner001.html.xdomain.jp/debug-02-1.html)
40
34
 
41
35
  [パーフェクトPHP デバッグ (チェックポイント)](http://beginner001.html.xdomain.jp/debug-01.html)
@@ -62,30 +56,36 @@
62
56
 
63
57
 
64
58
 
59
+  
60
+
61
+ **【パーフェクトPHP デバッグ 動作環境】**
62
+
63
+ ・XAMPP 5.6.31
64
+
65
+ ・NetBeans 8.2
66
+
67
+
68
+
69
+ **学習環境**なので XAMPP 7.x.x (PHP 7.x.x) にする必要はありません。
70
+
71
+ XAMPP 7.x.x でも動作しますが、Xdebug の準備が必要です。
72
+
73
+ [XAMPP 7.1.14 と NetBeans IDE 8.2 の不具合](http://beginner001.html.xdomain.jp/debug-03.html#PHP7)
74
+
75
+
76
+
65
- サンプルコードを理解すれば、**IDE デバッグ機能**を使ってエラーは解決できます。
77
+ サンプルコードフレームワークの **使い方** ではなく
66
-
78
+
67
- 当面は、サンプルコ理解を優先しくださ
79
+ フレムワークとオブジェクト指向 **考え方** につい書かれてるので
68
-
69
-
70
-
80
+
71
- あまり良い方法ではありませんが、
81
+ **バージョン、関係ありません。**
72
-
73
- [差分ツール (WinMerge)](https://winmerge.org/?lang=ja) で
74
-
75
- 「フォルダ単位に」すべてのソースの違いを一括で調べることもできます。
76
-
77
- (あくまで、「写経」の入力ミス チェックです)
78
-
79
-
80
-
81
- 最初は大変ですが、頑張ってください。
82
-
83
- 期待しています。
84
82
 
85
83
 
86
84
 
87
85
  ---
88
86
 
87
+
88
+
89
89
  ####NetBeans デバッグ方法
90
90
 
91
91
 
@@ -94,7 +94,7 @@
94
94
 
95
95
 
96
96
 
97
- **NetBeans IDE デバッグ機能** を使った 具体的な デバッグ方法 です。
97
+ **NetBeans IDE デバッグ機能** を使った デバッグ方法 です。
98
98
 
99
99
 
100
100
 
@@ -108,11 +108,25 @@
108
108
 
109
109
  仕様 (ホームページ表示とログイン)
110
110
 
111
+ - サンプルコード 仕様
112
+
113
+ - ホームページは、**ログイン後**に表示されます
114
+
111
- - サンプルコード: ホームページ(#5 Application->runAction('status', 'index', Array))は、ログイン後に表示されます
115
+ - ホームページ (#5 Application->runAction('**status**', '**index**', Array))
116
+
117
+  
118
+
112
-
119
+ - orangefarmer さん 仕様
120
+
121
+ - **未ログイン**で、ホームページ表示が実行されます (今回はエラー)
122
+
113
- - orangefarmer さん: 未ログイン(#2 StatusRepository->fetchAllPersonalArchivesByUserId(NULL))で、ホームページ表示実行されます
123
+ - #2 StatusRepository->fetchAllPersonalArchivesByUserId(**NULL**) (本来は $user['id'] の値セットされます)
124
+
114
-
125
+ - ログインする仕様だと、表示前に userテーブル使用で **DB への接続ミス** が発生します
126
+
127
+  
128
+
115
- - 対策 **下記** NetBeans ブレークポイント Session.php 49 参照
129
+ - 対策 **下記** NetBeans ブレークポイント Session.php 49 参照
116
130
 
117
131
 
118
132
 
@@ -174,9 +188,9 @@
174
188
 
175
189
 
176
190
 
177
- 実行後**エラーが再現**
191
+ デバッグを実行すると、最**エラーが再現** されます
178
-
192
+
179
- 原因は、**DB への接続ミス**
193
+ 原因は、**DB への接続ミス**です
180
194
 
181
195
 
182
196
 
@@ -478,7 +492,9 @@
478
492
 
479
493
  MiniBlogApplication.php に**エラーが無い場合**
480
494
 
481
- DbManager.php と Application.php のコード提示してもらう予定
495
+ DbManager.php と Application.php のコード提示してもらう予定です
496
+
497
+ (必要無くなった)
482
498
 
483
499
 
484
500
 
@@ -522,6 +538,12 @@
522
538
 
523
539
 
524
540
 
541
+ 子クラスのメソッド名 (cofigure) が親クラスのメソッド名 (co**n**figure) と違うために
542
+
543
+ **オーバライド**ができず、**データベースへの接続設定** が**未定義** のためです。
544
+
545
+
546
+
525
547
  `class MiniBlogApplication extends Application` ← **extends** (継承)
526
548
 
527
549
  `{`

7

微調整

2019/08/20 02:17

投稿

退会済みユーザー
test CHANGED
@@ -56,9 +56,9 @@
56
56
 
57
57
  パーフェクトPHP をデバッグしました (学習方法) や
58
58
 
59
- パーフェクトPHP をデバッグしました (やる気のある初心者)
59
+ パーフェクトPHP をデバッグしました (やる気のある初心者)
60
-
60
+
61
- 書いてありますが、**「写経」はおすすめしません。**
61
+ 書いてありますが、**「写経」はおすすめしません。**
62
62
 
63
63
 
64
64
 
@@ -110,7 +110,7 @@
110
110
 
111
111
  - サンプルコード: ホームページ(#5 Application->runAction('status', 'index', Array))は、ログイン後に表示されます
112
112
 
113
- - orangefarmer さん: 未ログイン(#2 StatusRepository->fetchAllPersonalArchivesByUserId(NULL))で実行されています
113
+ - orangefarmer さん: 未ログイン(#2 StatusRepository->fetchAllPersonalArchivesByUserId(NULL))で、ホームページ表示が実行されます
114
114
 
115
115
  - 対策 **下記** NetBeans ブレークポイント Session.php 49 参照
116
116
 
@@ -154,19 +154,19 @@
154
154
 
155
155
   
156
156
 
157
- NetBeans ブレークポイント (**3ヶ所**設定) と 処理順序
157
+ NetBeans **ブレークポイント** (3ヶ所設定) と **処理順序**
158
-
158
+
159
- |ファイル    |行番号|内容|次のアクション|
159
+ |ファイル    |行No|内容|次のアクション|
160
160
 
161
161
  |:--|--:|:--|:--|
162
162
 
163
- |Application.php|184|$controller("status"), $action("index") 確認|続行 (F5)|
163
+ |Application.php|184|$controller("status"), $action("index")|続行 (F5)|
164
164
 
165
165
  |Session.php|103|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
166
166
 
167
167
  |Session.php|49|$default true に変更 (**上記** 仕様 対策)|続行 (F5)|
168
168
 
169
- |DbRepository.php|41|$this->con false に変更 (PDO インスタンス 以外)|続行 (F5)|
169
+ |DbRepository.php|41|$this->con false に変更|続行 (F5)|
170
170
 
171
171
 
172
172
 
@@ -534,40 +534,50 @@
534
534
 
535
535
 
536
536
 
537
- MiniBlogApplication のメソッド
537
+ MiniBlogApplication の cofigure メソッド
538
538
 
539
539
  ` protected function cofigure()` ← **オーバライドできない** (co**n**figure でないため)
540
540
 
541
+ ` {` ↓ 以下 **データベースへの接続設定**
542
+
543
+ ` $this->db_manager->connect('master', array(`
544
+
545
+ ` 'dsn' => 'mysql:dbname=mini_blog;host=localhost;charset=utf8',`
546
+
547
+ ` 'user' => 'root',`
548
+
549
+ ` 'password' => '',`
550
+
551
+ ` ));`
552
+
553
+ ` }`
554
+
555
+
556
+
557
+
558
+
559
+ Application の **空** の co**n**figure メソッド
560
+
561
+ ` protected function configure()` ← co**n**figure
562
+
541
563
  ` {`
542
564
 
543
- ` ... データベースへの接続設定`
544
-
545
565
  ` }`
546
566
 
547
567
 
548
568
 
549
569
 
550
570
 
551
- Application の**空**のメソッド
571
+ Application のコンストラクタ
552
-
572
+
553
- ` protected function configure()` ← co**n**figure
573
+ ` public function __construct($debug = false)`
554
574
 
555
575
  ` {`
556
576
 
577
+ ` $this->setDebugMode($debug);`
578
+
579
+ ` $this->initialize();`
580
+
581
+ ` $this->configure();` ← **空** のメソッド co**n**figure (データベースへの接続設定 が **未定義**)
582
+
557
583
  ` }`
558
-
559
-
560
-
561
-
562
-
563
- Application のコンストラクタ
564
-
565
- ` public function __construct($debug = false)`
566
-
567
- ` {`
568
-
569
- ` ... 省略`
570
-
571
- ` $this->configure();` ← **空**のメソッド co**n**figure (データベースへの接続設定 が**未定義**)
572
-
573
- ` }`

6

微調整

2019/08/19 06:23

投稿

退会済みユーザー
test CHANGED
@@ -154,9 +154,9 @@
154
154
 
155
155
   
156
156
 
157
- NetBeans ブレークポイント (**3ヶ所**設定)
157
+ NetBeans ブレークポイント (**3ヶ所**設定) と 処理順序
158
-
158
+
159
- |ファイル|行|内容|次のアクション|
159
+ |ファイル    |行番号|内容|次のアクション|
160
160
 
161
161
  |:--|--:|:--|:--|
162
162
 
@@ -468,7 +468,7 @@
468
468
 
469
469
   
470
470
 
471
- **上記 3ファイル の関連個所 (メソッド)を調べる**
471
+ **上記 3ファイル の メソッド を調べる**
472
472
 
473
473
  上記 3ファイルのうち、orangefarmer さんから コード提示されているのは、
474
474
 

5

エラーの理由 追加

2019/08/19 05:15

投稿

退会済みユーザー
test CHANGED
@@ -36,21 +36,27 @@
36
36
 
37
37
 
38
38
 
39
- teratail
39
+ [パーフェクトPHP デバッグ (処理の流れ | ユーザ登録機能作成)](http://beginner001.html.xdomain.jp/debug-02-1.html)
40
-
40
+
41
- [パーフェクトphpの7章の例題の変数の中身が知りたい。](https://teratail.com/questions/185638)
41
+ [パーフェクトPHP デバッグ (チェックポイント)](http://beginner001.html.xdomain.jp/debug-01.html)
42
-
42
+
43
- 「参考サイトの紹介です」の**各リンク**もご覧ください。
43
+ [パーフェクPHP デバッグ (そ他)](http://beginner001.html.xdomain.jp/debug-03.html) (具体的な 環境設定手順)
44
+
45
+ [パーフェクトPHP デバッグ (**NetBeans デバッグ方法**)](http://beginner001.html.xdomain.jp/debug-04.html) (具体的な デバッグ例)
46
+
47
+
48
+
49
+ [パーフェクトPHP をデバッグしました (学習方法)](https://beginner001.hatenablog.com/entry/2018/12/27/100003)
50
+
51
+ [パーフェクトPHP をデバッグしました (やる気のある初心者)](https://beginner001.hatenablog.com/entry/2018/12/27/100004)
44
52
 
45
53
 
46
54
 
47
55
  上記リンクの
48
56
 
49
- [パーフェクトPHP をデバッグしました (学習方法)](https://beginner001.hatenablog.com/entry/2018/12/27/100003)
57
+ パーフェクトPHP をデバッグしました (学習方法)
50
-
58
+
51
- [パーフェクトPHP をデバッグしました (やる気のある初心者)](https://beginner001.hatenablog.com/entry/2018/12/27/100004)
59
+ パーフェクトPHP をデバッグしました (やる気のある初心者)
52
-
53
- [NetBeans IDE のおかげで理解が飛躍的に](https://blogs.yahoo.co.jp/amegrapsp/41551211.html)
54
60
 
55
61
  に書いてありますが、**「写経」はおすすめしません。**
56
62
 
@@ -62,8 +68,6 @@
62
68
 
63
69
 
64
70
 
65
-
66
-
67
71
  あまり良い方法ではありませんが、
68
72
 
69
73
  [差分ツール (WinMerge)](https://winmerge.org/?lang=ja) で
@@ -86,7 +90,7 @@
86
90
 
87
91
 
88
92
 
89
- **【エラー原因】**
93
+ **【エラー原因】**
90
94
 
91
95
 
92
96
 
@@ -108,7 +112,7 @@
108
112
 
109
113
  - orangefarmer さん: 未ログイン(#2 StatusRepository->fetchAllPersonalArchivesByUserId(NULL))で実行されています
110
114
 
111
- - 対策 **下記** NetBeans ブレークポイント (Session.php) (49) 参照
115
+ - 対策 **下記** NetBeans ブレークポイント Session.php 49 参照
112
116
 
113
117
 
114
118
 
@@ -150,29 +154,29 @@
150
154
 
151
155
   
152
156
 
153
- NetBeans ブレークポイント (3ヶ所設定)
157
+ NetBeans ブレークポイント (**3ヶ所**設定)
154
158
 
155
159
  |ファイル|行|内容|次のアクション|
156
160
 
157
- |:--|:--|:--|:--|
161
+ |:--|--:|:--|:--|
158
162
 
159
163
  |Application.php|184|$controller("status"), $action("index") 確認|続行 (F5)|
160
164
 
161
165
  |Session.php|103|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
162
166
 
163
- |(Session.php)|(49)|$default true に変更 (**上記** 仕様 対策)|続行 (F5)|
167
+ |Session.php|49|$default true に変更 (**上記** 仕様 対策)|続行 (F5)|
164
168
 
165
169
  |DbRepository.php|41|$this->con false に変更 (PDO インスタンス 以外)|続行 (F5)|
166
170
 
167
171
 
168
172
 
169
- **(Session.php) (49) は、ブレークポイントではありません**
173
+ **Session.php 49 は、ブレークポイントではありません**
170
-
171
-
172
-
174
+
175
+
176
+
173
- 実行後、**エラーが再現**されます
177
+ 実行後、**エラーが再現**
174
-
178
+
175
- 原因は、**DB への接続ミス** です
179
+ 原因は、**DB への接続ミス**
176
180
 
177
181
 
178
182
 
@@ -464,7 +468,7 @@
464
468
 
465
469
   
466
470
 
467
- **上記 3ファイル の関連個所 (メソッド)を調べる**
471
+ **上記 3ファイル の関連個所 (メソッド)を調べる**
468
472
 
469
473
  上記 3ファイルのうち、orangefarmer さんから コード提示されているのは、
470
474
 
@@ -503,3 +507,67 @@
503
507
  正 protected function co**n**figure()
504
508
 
505
509
  誤 protected function cofigure()
510
+
511
+
512
+
513
+ ---
514
+
515
+
516
+
517
+ 【エラーの理由】
518
+
519
+
520
+
521
+ **DB への接続ミス** になる理由です。
522
+
523
+
524
+
525
+ `class MiniBlogApplication extends Application` ← **extends** (継承)
526
+
527
+ `{`
528
+
529
+ ` ... 省略`
530
+
531
+ `}`
532
+
533
+
534
+
535
+
536
+
537
+ MiniBlogApplication のメソッド
538
+
539
+ ` protected function cofigure()` ← **オーバライドできない** (co**n**figure でないため)
540
+
541
+ ` {`
542
+
543
+ ` ... データベースへの接続設定`
544
+
545
+ ` }`
546
+
547
+
548
+
549
+
550
+
551
+ Application の**空**のメソッド
552
+
553
+ ` protected function configure()` ← co**n**figure
554
+
555
+ ` {`
556
+
557
+ ` }`
558
+
559
+
560
+
561
+
562
+
563
+ Application のコンストラクタ
564
+
565
+ ` public function __construct($debug = false)`
566
+
567
+ ` {`
568
+
569
+ ` ... 省略`
570
+
571
+ ` $this->configure();` ← **空**のメソッド co**n**figure (データベースへの接続設定 が**未定義**)
572
+
573
+ ` }`

4

表 整形

2019/08/19 03:05

投稿

退会済みユーザー
test CHANGED
@@ -108,7 +108,7 @@
108
108
 
109
109
  - orangefarmer さん: 未ログイン(#2 StatusRepository->fetchAllPersonalArchivesByUserId(NULL))で実行されています
110
110
 
111
- - 対策 **下記** NetBeans ブレークポイント (Session.php) (49行目) 参照
111
+ - 対策 **下記** NetBeans ブレークポイント (Session.php) (49) 参照
112
112
 
113
113
 
114
114
 
@@ -156,17 +156,17 @@
156
156
 
157
157
  |:--|:--|:--|:--|
158
158
 
159
- |Application.php|184行目|$controller("status"), $action("index") 確認|続行 (F5)|
159
+ |Application.php|184|$controller("status"), $action("index") 確認|続行 (F5)|
160
-
160
+
161
- |Session.php|103行目|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
161
+ |Session.php|103|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
162
-
162
+
163
- |(Session.php)|(49行目)|$default true に変更 (**上記** 仕様 対策)|続行 (F5)|
163
+ |(Session.php)|(49)|$default true に変更 (**上記** 仕様 対策)|続行 (F5)|
164
-
164
+
165
- |DbRepository.php|41行目|$this->con false に変更 (PDO インスタンス 以外)|続行 (F5)|
165
+ |DbRepository.php|41|$this->con false に変更 (PDO インスタンス 以外)|続行 (F5)|
166
-
167
-
168
-
166
+
167
+
168
+
169
- **(Session.php) (49行目) は、ブレークポイントではありません**
169
+ **(Session.php) (49) は、ブレークポイントではありません**
170
170
 
171
171
 
172
172
 

3

画像へのコメント表示

2019/08/18 06:19

投稿

退会済みユーザー
test CHANGED
@@ -496,6 +496,8 @@
496
496
 
497
497
  ![MiniBlogApplication.php の比較](c26d5241bd8a86a8dfe542b1a5973cd8.jpeg)
498
498
 
499
+ クリックすると、拡大表示します
500
+
499
501
 
500
502
 
501
503
  正 protected function co**n**figure()

2

NetBeans デバッグ方法 追加

2019/08/18 05:50

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,4 @@
1
- ###回答 と 参考サイトの紹介 です
1
+ ###回答 と 参考サイトの紹介 と NetBeans デバッグ方法 です
2
2
 
3
3
 
4
4
 
@@ -18,10 +18,18 @@
18
18
 
19
19
 
20
20
 
21
+ **NetBeans IDE デバッグ機能** を使って解決しました。
22
+
23
+
24
+
21
25
  ---
22
26
 
23
27
 
24
28
 
29
+ 参考サイトの紹介です。
30
+
31
+
32
+
25
33
  直接の回答ではありません。
26
34
 
27
35
  (nullbotさんの好意を無駄にしたくないので...)
@@ -44,7 +52,7 @@
44
52
 
45
53
  [NetBeans IDE のおかげで理解が飛躍的に](https://blogs.yahoo.co.jp/amegrapsp/41551211.html)
46
54
 
47
- に書いてありますが、「写経」はおすすめしません。
55
+ に書いてありますが、**「写経」はおすすめしません。**
48
56
 
49
57
 
50
58
 
@@ -69,3 +77,427 @@
69
77
  最初は大変ですが、頑張ってください。
70
78
 
71
79
  期待しています。
80
+
81
+
82
+
83
+ ---
84
+
85
+ ####NetBeans デバッグ方法
86
+
87
+
88
+
89
+ **【エラー原因】**
90
+
91
+
92
+
93
+ **NetBeans IDE デバッグ機能** を使った 具体的な デバッグ方法 です。
94
+
95
+
96
+
97
+ 注意点
98
+
99
+ - 公式サイト サンプルコード(mini-blog.zip) を使用 (不具合 2ヶ所修正)
100
+
101
+ - デバッグ中の変数の**変更**は、**メモリ上**です (ファイルは元のまま)
102
+
103
+
104
+
105
+ 仕様 (ホームページ表示とログイン)
106
+
107
+ - サンプルコード: ホームページ(#5 Application->runAction('status', 'index', Array))は、ログイン後に表示されます
108
+
109
+ - orangefarmer さん: 未ログイン(#2 StatusRepository->fetchAllPersonalArchivesByUserId(NULL))で実行されています
110
+
111
+ - 対策 **下記** NetBeans ブレークポイント (Session.php) (49行目) 参照
112
+
113
+
114
+
115
+ 参考
116
+
117
+ - [処理の流れ | ホームページと投稿](http://beginner001.html.xdomain.jp/debug-02-2.html)
118
+
119
+ - [処理の流れ | アカウント情報管理とログイン](http://beginner001.html.xdomain.jp/debug-02-4.html)
120
+
121
+
122
+
123
+
124
+
125
+ エラー ログ
126
+
127
+ ```
128
+
129
+ #6 C:\xampp\htdocs\php-blog.localhost\web\index_dev.php(7): Application->run()
130
+
131
+ #5 C:\xampp\htdocs\php-blog.localhost\core\Application.php(103): Application->runAction('status', 'index', Array)
132
+
133
+ #4 C:\xampp\htdocs\php-blog.localhost\core\Application.php(123): Controller->run('index', Array)
134
+
135
+ #3 C:\xampp\htdocs\php-blog.localhost\core\Controller.php(41): StatusController->indexAction(Array)
136
+
137
+ #2 C:\xampp\htdocs\php-blog.localhost\controllers\StatusController.php(8): StatusRepository->fetchAllPersonalArchivesByUserId(NULL)
138
+
139
+ #1 C:\xampp\htdocs\php-blog.localhost\models\StatusRepository.php(22): DbRepository->fetchAll('select a.*, u.u...', Array)
140
+
141
+ #0 C:\xampp\htdocs\php-blog.localhost\core\DbRepository.php(32): DbRepository->execute('select a.*, u.u...', Array)
142
+
143
+
144
+
145
+ Fatal error: Call to a member function prepare() on bool
146
+
147
+ ```
148
+
149
+
150
+
151
+  
152
+
153
+ NetBeans ブレークポイント (3ヶ所設定)
154
+
155
+ |ファイル|行|内容|次のアクション|
156
+
157
+ |:--|:--|:--|:--|
158
+
159
+ |Application.php|184行目|$controller("status"), $action("index") 確認|続行 (F5)|
160
+
161
+ |Session.php|103行目|isAuthenticated ログインチェック|ステップ・イン (F7) 2回|
162
+
163
+ |(Session.php)|(49行目)|$default true に変更 (**上記** 仕様 対策)|続行 (F5)|
164
+
165
+ |DbRepository.php|41行目|$this->con false に変更 (PDO インスタンス 以外)|続行 (F5)|
166
+
167
+
168
+
169
+ **(Session.php) (49行目) は、ブレークポイントではありません**
170
+
171
+
172
+
173
+ 実行後、**エラーが再現**されます
174
+
175
+ 原因は、**DB への接続ミス** です
176
+
177
+
178
+
179
+  
180
+
181
+ Application.php
182
+
183
+ ```PHP
184
+
185
+ ...
186
+
187
+ 173 public function run()
188
+
189
+ 174 {
190
+
191
+ 175 try {
192
+
193
+ 176 $params = $this->router->resolve($this->request->getPathInfo());
194
+
195
+ 177 if ($params === false) {
196
+
197
+ 178 throw new HttpNotFoundException('No route found for ' . $this->request->getPathInfo());
198
+
199
+ 179 }
200
+
201
+ 180
202
+
203
+ 181 $controller = $params['controller'];
204
+
205
+ 182 $action = $params['action'];
206
+
207
+ 183
208
+
209
+ 184 $this->runAction($controller, $action, $params);
210
+
211
+ 185 } catch (HttpNotFoundException $e) {
212
+
213
+ 186 $this->render404Page($e);
214
+
215
+ 187 } catch (UnauthorizedActionException $e) {
216
+
217
+ 188 list($controller, $action) = $this->login_action;
218
+
219
+ 189 $this->runAction($controller, $action);
220
+
221
+ 190 }
222
+
223
+ 191
224
+
225
+ ...
226
+
227
+ ```
228
+
229
+
230
+
231
+  
232
+
233
+ Session.php
234
+
235
+ ```PHP
236
+
237
+ ...
238
+
239
+ 43 public function get($name, $default = null)
240
+
241
+ 44 {
242
+
243
+ 45 if (isset($_SESSION[$name])) {
244
+
245
+ 46 return $_SESSION[$name];
246
+
247
+ 47 }
248
+
249
+ 48
250
+
251
+ 49 return $default;
252
+
253
+ 50 }
254
+
255
+ ...
256
+
257
+ 101 public function isAuthenticated()
258
+
259
+ 102 {
260
+
261
+ 103 return $this->get('_authenticated', false);
262
+
263
+ 104 }
264
+
265
+ ...
266
+
267
+ ```
268
+
269
+
270
+
271
+  
272
+
273
+ DbRepository.php
274
+
275
+ ```PHP
276
+
277
+ ...
278
+
279
+ 39 public function execute($sql, $params = array())
280
+
281
+ 40 {
282
+
283
+ 41 $stmt = $this->con->prepare($sql);
284
+
285
+ 42 $stmt->execute($params);
286
+
287
+ 43
288
+
289
+ 44 return $stmt;
290
+
291
+ 45 }
292
+
293
+ ...
294
+
295
+ ```
296
+
297
+
298
+
299
+ ---
300
+
301
+
302
+
303
+ **【ソースコードを調べる】**
304
+
305
+
306
+
307
+ "**new PDO**" を検索 検索ツール(Devas)
308
+
309
+ |ファイル|メソッド|
310
+
311
+ |:--|:--|
312
+
313
+ |DbManager.php |public function **connect(**$name, $params)|
314
+
315
+
316
+
317
+  
318
+
319
+ "**connect(**" を検索 検索ツール(Devas)
320
+
321
+ |ファイル|メソッド|
322
+
323
+ |:--|:--|
324
+
325
+ |MiniBlogApplication.php|protected function **configure(**)|
326
+
327
+ |~~DbManager.php~~|~~public function connect($name, $params)~~ 同上|
328
+
329
+
330
+
331
+  
332
+
333
+ "**configure(**" を検索 検索ツール(Devas)
334
+
335
+ |ファイル|メソッド|
336
+
337
+ |:--|:--|
338
+
339
+ |~~MiniBlogApplication.php~~|~~protected function configure()~~ 同上|
340
+
341
+ |Application.php|public function __construct($debug = false)|
342
+
343
+ |Application.php|protected function configure()|
344
+
345
+
346
+
347
+  
348
+
349
+ DbManager.php
350
+
351
+ ```PHP
352
+
353
+ ...
354
+
355
+ 20 public function connect($name, $params)
356
+
357
+ 21 {
358
+
359
+ 22 $params = array_merge(array(
360
+
361
+ 23 'dsn' => null,
362
+
363
+ 24 'user' => '',
364
+
365
+ 25 'password' => '',
366
+
367
+ 26 'options' => array(),
368
+
369
+ 27 ), $params);
370
+
371
+ 28
372
+
373
+ 29 $con = new PDO(
374
+
375
+ 30 $params['dsn'],
376
+
377
+ 31 $params['user'],
378
+
379
+ 32 $params['password'],
380
+
381
+ 33 $params['options']
382
+
383
+ 34 );
384
+
385
+ 35
386
+
387
+ 36 $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
388
+
389
+ 37
390
+
391
+ 38 $this->connections[$name] = $con;
392
+
393
+ 39 }
394
+
395
+ ...
396
+
397
+ ```
398
+
399
+
400
+
401
+  
402
+
403
+ MiniBlogApplication.php
404
+
405
+ ```PHP
406
+
407
+ ...
408
+
409
+ 37 protected function configure()
410
+
411
+ 38 {
412
+
413
+ 39 $this->db_manager->connect('master', array(
414
+
415
+ 40 'dsn' => 'mysql:dbname=mini_blog;host=localhost;charset=utf8',
416
+
417
+ 41 'user' => 'root',
418
+
419
+ 42 'password' => '',
420
+
421
+ 43 ));
422
+
423
+ 44 }
424
+
425
+ ...
426
+
427
+ ```
428
+
429
+
430
+
431
+  
432
+
433
+ Application.php
434
+
435
+ ```PHP
436
+
437
+ ...
438
+
439
+ 21 public function __construct($debug = false)
440
+
441
+ 22 {
442
+
443
+ 23 $this->setDebugMode($debug);
444
+
445
+ 24 $this->initialize();
446
+
447
+ 25 $this->configure();
448
+
449
+ 26 }
450
+
451
+ ...
452
+
453
+ 60 protected function configure()
454
+
455
+ 61 {
456
+
457
+ 62 }
458
+
459
+ ...
460
+
461
+ ```
462
+
463
+
464
+
465
+  
466
+
467
+ **上記 3ファイル の関連個所 (メソッド等)を調べる**
468
+
469
+ 上記 3ファイルのうち、orangefarmer さんから コード提示されているのは、
470
+
471
+ MiniBlogApplication.php のみ
472
+
473
+
474
+
475
+ MiniBlogApplication.php に**エラーが無い場合**
476
+
477
+ DbManager.php と Application.php のコード提示してもらう予定
478
+
479
+
480
+
481
+ ---
482
+
483
+
484
+
485
+ **【修正箇所が分かる】**
486
+
487
+
488
+
489
+ 差分ツール (WinMerge) で
490
+
491
+ サンプルコード の MiniBlogApplication.php と orangefarmer さんの MiniBlogApplication.php を比較する
492
+
493
+
494
+
495
+
496
+
497
+ ![MiniBlogApplication.php の比較](c26d5241bd8a86a8dfe542b1a5973cd8.jpeg)
498
+
499
+
500
+
501
+ 正 protected function co**n**figure()
502
+
503
+ 誤 protected function cofigure()

1

回答 追加

2019/08/18 05:38

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,24 @@
1
- ###参考サイトの紹介です
1
+ ###回答 と 参考サイトの紹介 です
2
+
3
+
4
+
5
+ 回答です。
6
+
7
+
8
+
9
+ PhpBlogApplication.php (MiniBlogApplication.php)
10
+
11
+ 誤 protected function cofigure()
12
+
13
+ 正 protected function co**n**figure()
14
+
15
+
16
+
17
+ 既に、指摘されていますが、**DB への接続ミス**です。
18
+
19
+
20
+
21
+ ---
2
22
 
3
23
 
4
24
 
@@ -12,17 +32,19 @@
12
32
 
13
33
  [パーフェクトphpの7章の例題の変数の中身が知りたい。](https://teratail.com/questions/185638) の
14
34
 
15
- 「参考サイトの紹介です」の**各リンク**ご覧ください。
35
+ 「参考サイトの紹介です」の**各リンク**ご覧ください。
16
36
 
17
37
 
18
38
 
19
39
  上記リンクの
20
40
 
21
- [パーフェクトPHP をデバッグしました (学習方法)](https://beginner001.hatenablog.com/entry/2018/12/27/100003)
41
+ [パーフェクトPHP をデバッグしました (学習方法)](https://beginner001.hatenablog.com/entry/2018/12/27/100003)
22
42
 
23
- [パーフェクトPHP をデバッグしました (やる気のある初心者)](https://beginner001.hatenablog.com/entry/2018/12/27/100004)
43
+ [パーフェクトPHP をデバッグしました (やる気のある初心者)](https://beginner001.hatenablog.com/entry/2018/12/27/100004)
24
44
 
45
+ [NetBeans IDE のおかげで理解が飛躍的に](https://blogs.yahoo.co.jp/amegrapsp/41551211.html)
46
+
25
- 書いてありますが、「写経」はおすすめしません。
47
+ 書いてありますが、「写経」はおすすめしません。
26
48
 
27
49
 
28
50