回答編集履歴

5

加筆修正

2018/05/03 04:13

投稿

退会済みユーザー
test CHANGED
@@ -76,7 +76,7 @@
76
76
 
77
77
 
78
78
 
79
- でも、プロパティやメソッドを文字列で与えて動的にアクセスするケースは
79
+ でも、**プロパティやメソッド変数で与えて動的にアクセス**するケースは
80
80
 
81
81
  高度な実装場面のような気がするので、初学者は混乱のもとになるだけです。
82
82
 

4

加筆修正

2018/05/03 04:13

投稿

退会済みユーザー
test CHANGED
@@ -79,3 +79,47 @@
79
79
  でも、プロパティやメソッドを文字列で与えて動的にアクセスするケースは
80
80
 
81
81
  高度な実装場面のような気がするので、初学者は混乱のもとになるだけです。
82
+
83
+
84
+
85
+ ---
86
+
87
+
88
+
89
+ ```php
90
+
91
+ <?php
92
+
93
+ class aa
94
+
95
+ {
96
+
97
+ public function func()
98
+
99
+ {
100
+
101
+ $this->$bb = 'ああああああ';
102
+
103
+ $b = 'test2';
104
+
105
+
106
+
107
+ return $b;
108
+
109
+ }
110
+
111
+
112
+
113
+ // 追加
114
+
115
+ public $c = 1;
116
+
117
+ }
118
+
119
+ $x = new aa();
120
+
121
+ echo $x->func();
122
+
123
+ echo $x->c; // class aa内のプロパティ$cにアクセスするには、こうする
124
+
125
+ ```

3

見直し

2018/05/03 04:03

投稿

退会済みユーザー
test CHANGED
@@ -70,7 +70,11 @@
70
70
 
71
71
  $bbに"var_a"という文字列が入っていれば、
72
72
 
73
+ `$this->$bb`は
74
+
73
- プロパティvar_aにアクセスするために`$this->$bb`という表記は意味があります。
75
+ `$this->var_a`と同じ意味になります。
76
+
77
+
74
78
 
75
79
  でも、プロパティやメソッドを文字列で与えて動的にアクセスするケースは
76
80
 

2

見直し

2018/05/03 02:47

投稿

退会済みユーザー
test CHANGED
@@ -13,3 +13,65 @@
13
13
  ってことなのかなぁ、
14
14
 
15
15
  適切な用語じゃない気もしますが。
16
+
17
+
18
+
19
+ Notice: Undefined variableを出さずに再現しようとすると、こんなコードになります。
20
+
21
+
22
+
23
+ ```php
24
+
25
+ <?php
26
+
27
+
28
+
29
+ class aa
30
+
31
+ {
32
+
33
+ public $var_a;
34
+
35
+ public function func()
36
+
37
+ {
38
+
39
+ $bb = "var_a";
40
+
41
+ $this->$bb = 'ああああああ';
42
+
43
+ $b = 'test2';
44
+
45
+
46
+
47
+ return $b;
48
+
49
+ }
50
+
51
+ }
52
+
53
+ $x = new aa();
54
+
55
+ echo $x->func();
56
+
57
+ $c = "var_a";
58
+
59
+ echo $x->$c;
60
+
61
+ exit();
62
+
63
+ ```
64
+
65
+ ![実行結果](7359ba36434ebf64d07cffaf90fea5d9.png)
66
+
67
+ クラスaa内の公開プロパティvar_aがあって、
68
+
69
+ aa::func()内の処理として
70
+
71
+ $bbに"var_a"という文字列が入っていれば、
72
+
73
+ プロパティvar_aにアクセスするために`$this->$bb`という表記は意味があります。
74
+
75
+ でも、プロパティやメソッドを文字列で与えて動的にアクセスするケースは
76
+
77
+ 高度な実装場面のような気がするので、初学者は混乱のもとになるだけです。

1

見直し

2018/05/03 02:44

投稿

退会済みユーザー
test CHANGED
@@ -2,13 +2,13 @@
2
2
 
3
3
  $bbが未定義のため
4
4
 
5
- クラスaaの未定義な領域(?)に'ああああああ'が格納されている状態で、
5
+ クラスaaの未定義な領域(というかデフォルトな名前$)に'ああああああ'が格納されている状態で、
6
6
 
7
7
  `echo $x->$c;`したら、
8
8
 
9
9
  クラスaaのインスタンス$xの、これまた未定義な$cのために、
10
10
 
11
- 未定義な領域の'ああああああ'が得られた、
11
+ 未定義な領域($x->$)の'ああああああ'が得られた、
12
12
 
13
13
  ってことなのかなぁ、
14
14