回答編集履歴

3

誤字

2016/12/08 07:34

投稿

popobot
popobot

スコア6586

test CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
 
22
22
 
23
- 検証に書いた同じWarningが発生するコード
23
+ 検証に書いた同じWarningが発生するコード
24
24
 
25
25
  ```php
26
26
 

2

補足

2016/12/08 07:34

投稿

popobot
popobot

スコア6586

test CHANGED
@@ -17,3 +17,73 @@
17
17
  }
18
18
 
19
19
  ```
20
+
21
+
22
+
23
+ 検証に書いた同じWarningが発生するコード
24
+
25
+ ```php
26
+
27
+ <?php
28
+
29
+ class Controller {
30
+
31
+
32
+
33
+ private $_errors;
34
+
35
+ private $_values;
36
+
37
+
38
+
39
+ public function __construct() {
40
+
41
+ if (!isset($_SESSION['token'])) {
42
+
43
+ $_SESSION['token'] = bin2hex(openssl_random_pseudo_bytes(16));//32桁の文字列作る
44
+
45
+ }
46
+
47
+ $this->_errors = new \stdClass();
48
+
49
+ $this->_values = new \stdClass();
50
+
51
+ }
52
+
53
+
54
+
55
+ protected function setValues($key, $value) {
56
+
57
+ $this->_values->$key = $value; // 20行目
58
+
59
+ }
60
+
61
+ }
62
+
63
+
64
+
65
+ class MyController extends Controller {
66
+
67
+ public function __construct() {
68
+
69
+ //以下の行を有効にすると発生しなくなる
70
+
71
+ //parent::__construct();
72
+
73
+ }
74
+
75
+ public function set() {
76
+
77
+ $this->setValues('a', 'b');
78
+
79
+ }
80
+
81
+ }
82
+
83
+
84
+
85
+ $c = new MyController();
86
+
87
+ $c->set();
88
+
89
+ ```

1

補足

2016/12/08 07:33

投稿

popobot
popobot

スコア6586

test CHANGED
@@ -1,8 +1,8 @@
1
1
  コード全体がないので、予想ですが...
2
2
 
3
- Controllerを継承したクラスの```__construct()```で親クラスの```__construct()```を実行していないので初期化もれしているのではないかと
3
+ Controllerを継承したクラスのコンストラクタ```__construct()```で親クラスのコンストラクタ```__construct()```を実行していないので初期化もれしているのではないかと
4
4
 
5
- 継承したクラスの__construct()内に以下を追記したらどうでしょうか
5
+ 継承したクラスのコンストラクタ内に以下を追記したらどうでしょうか
6
6
 
7
7
  ```php
8
8