質問編集履歴

11

文言修正

2020/04/16 01:50

投稿

you_san
you_san

スコア4

test CHANGED
File without changes
test CHANGED
@@ -62,9 +62,9 @@
62
62
 
63
63
  (上記サンプルプログラムで言えば、プロパティの初期値が毎回「$channelNo = 8;」で問題ない場合)
64
64
 
65
- 下記のようにコンストラクタを作るらずに、
65
+ 下記プログラムのようにコンストラクタを作るらずに、
66
66
 
67
- プロパティに値を直接代入($channelNo = 8;のように代入)してしまえば問題ないのではないか?
67
+ プロパティに初期値を直接代入($channelNo = 8;のように代入)してしまえば問題ないのではないか?
68
68
 
69
69
  と考えてしまっています。
70
70
 
@@ -134,15 +134,15 @@
134
134
 
135
135
 
136
136
 
137
- つまり、インスタンス化時にプロパティの初期値が毎回同じ場合
137
+ つまり、インスタンス化時にプロパティの初期値が毎回同じで問題場合
138
138
 
139
- (今回のサンプルプログラムでいえば、「$channelNo = 8;」場合)
139
+ (今回のサンプルプログラムでいえば、初期値は「$channelNo = 8;」で問題場合)
140
140
 
141
141
  であったとしても、
142
142
 
143
143
 
144
144
 
145
- プロパティに直接値を代入するのではなく、
145
+ プロパティに直接初期値を代入するのではなく、
146
146
 
147
147
  コンストラクタで初期化を行ったほうが良い理由は、あるのでしょうか?
148
148
 

10

文言修正

2020/04/16 01:50

投稿

you_san
you_san

スコア4

test CHANGED
File without changes
test CHANGED
@@ -58,9 +58,9 @@
58
58
 
59
59
  【質問】
60
60
 
61
- インスタンス化時のプロパティ値が毎回同じ値で問題ない場合、
61
+ インスタンス化時のプロパティの初期値が毎回同じ値で問題ない場合、
62
62
 
63
- (上記サンプルプログラムで言えば、プロパティ値が毎回「$channelNo = 8;」で問題ない場合)
63
+ (上記サンプルプログラムで言えば、プロパティの初期値が毎回「$channelNo = 8;」で問題ない場合)
64
64
 
65
65
  下記のようにコンストラクタを作るらずに、
66
66
 
@@ -134,7 +134,7 @@
134
134
 
135
135
 
136
136
 
137
- つまり、インスタンス化時にプロパティの値が毎回同じになる場合
137
+ つまり、インスタンス化時にプロパティの初期値が毎回同じになる場合
138
138
 
139
139
  (今回のサンプルプログラムでいえば、「$channelNo = 8;」となる場合)
140
140
 

9

文言修正

2020/04/16 01:46

投稿

you_san
you_san

スコア4

test CHANGED
File without changes
test CHANGED
@@ -158,16 +158,14 @@
158
158
 
159
159
  【現時点で、考えていること】
160
160
 
161
- 現時点で、考えている理由しては、
161
+ 現時点で、考えているとは、
162
162
 
163
163
  コンストラクタを使用することで、
164
164
 
165
165
 
166
166
 
167
- 「こで初期化を行っているんだよ!
167
+ こで初期化を行っているかがわかりやすくなる」
168
-
169
- というのがわかりやすくなる」
170
168
 
171
169
 
172
170
 
173
- という理由のみが思い付いている点です。
171
+ です。

8

補足追加

2020/04/16 01:42

投稿

you_san
you_san

スコア4

test CHANGED
File without changes
test CHANGED
@@ -151,3 +151,23 @@
151
151
 
152
152
 
153
153
  ご回答よろしくおねがいします。
154
+
155
+
156
+
157
+
158
+
159
+ 【現時点で、考えていること】
160
+
161
+ 現時点で、考えている理由としては、
162
+
163
+ コンストラクタを使用することで、
164
+
165
+
166
+
167
+ 「ここで初期化を行っているんだよ!
168
+
169
+ というのがわかりやすくなる」
170
+
171
+
172
+
173
+ という理由のみが思い付いている点です。

7

改行修正

2020/04/16 01:40

投稿

you_san
you_san

スコア4

test CHANGED
File without changes
test CHANGED
@@ -134,7 +134,13 @@
134
134
 
135
135
 
136
136
 
137
+ つまり、インスタンス化時にプロパティの値が毎回同じになる場合
138
+
137
- つまり、インスタンス化時にプロパティの値が毎回同じになる場合(今回のサンプルプログラムでいえば、「$channelNo = 8;」となる場合)であったとしても、
139
+ (今回のサンプルプログラムでいえば、「$channelNo = 8;」となる場合)
140
+
141
+ であったとしても、
142
+
143
+
138
144
 
139
145
  プロパティに直接値を代入するのではなく、
140
146
 

6

文言追加

2020/04/16 01:34

投稿

you_san
you_san

スコア4

test CHANGED
File without changes
test CHANGED
@@ -136,6 +136,8 @@
136
136
 
137
137
  つまり、インスタンス化時にプロパティの値が毎回同じになる場合(今回のサンプルプログラムでいえば、「$channelNo = 8;」となる場合)であったとしても、
138
138
 
139
+ プロパティに直接値を代入するのではなく、
140
+
139
141
  コンストラクタで初期化を行ったほうが良い理由は、あるのでしょうか?
140
142
 
141
143
  また、それは、どのような理由なのでしょうか?

5

文言追加

2020/04/16 01:33

投稿

you_san
you_san

スコア4

test CHANGED
File without changes
test CHANGED
@@ -134,7 +134,7 @@
134
134
 
135
135
 
136
136
 
137
- つまり、インスタンス化時にプロパティの値が毎回同じになる場合(引数が必要場合)であったとしても、
137
+ つまり、インスタンス化時にプロパティの値が毎回同じになる場合(今回のサンプルプログラムでいえば、「$channelNo = 8;」と場合)であったとしても、
138
138
 
139
139
  コンストラクタで初期化を行ったほうが良い理由は、あるのでしょうか?
140
140
 

4

書式の改善、質問内容の具体化

2020/04/16 01:31

投稿

you_san
you_san

スコア4

test CHANGED
File without changes
test CHANGED
@@ -1,16 +1,26 @@
1
- インスタンス生成時の初期化について質問させてください。
1
+ インスタンス生成時のコンストラクタによる初期化について質問させてください。
2
2
 
3
3
 
4
4
 
5
- コンストラクタは、
5
+ 【前提】
6
6
 
7
- クラスでインスタンス化した際に実行される
7
+ ンストラクとは、
8
8
 
9
+ 「クラスからインスタンス化を行った際に
10
+
11
+ 自動的に1回だけ実行される初期化のための関数」
12
+
9
- 初期化のための関数だと認識しています。
13
+ と認識しています。
10
14
 
11
15
 
12
16
 
17
+ コンストラクタについては、下記の記事を参考にしました。
18
+
19
+ https://www.javadrive.jp/php/member/index6.html
20
+
21
+
22
+
13
- ### コンストラクタによる初期化
23
+ ### 上記記事内のコンストラクタによる初期化のサンプルプログラム
14
24
 
15
25
  ```php
16
26
 
@@ -46,25 +56,17 @@
46
56
 
47
57
 
48
58
 
49
- 【質問
59
+ 【質問】
50
60
 
51
- クラに引数がなかった場合、
61
+ インタンス化時のプロパティ値毎回同じ値で問題場合、
52
62
 
63
+ (上記サンプルプログラムで言えば、プロパティ値が毎回「$channelNo = 8;」で問題ない場合)
64
+
53
- 下記のようにコンストラクタをわざわざ作らなくても良いのではないか?
65
+ 下記のようにコンストラクタを作ずに、
66
+
67
+ プロパティに値を直接代入($channelNo = 8;のように代入)してしまえば問題ないのではないか?
54
68
 
55
69
  と考えてしまっています。
56
-
57
-
58
-
59
- クラスに引数がない場合に、
60
-
61
- コンストラクタを使用せずに初期化をすることは、問題はあるのでしょうか?
62
-
63
- また、どのような問題があるのでしょうか?
64
-
65
-
66
-
67
- ### コンストラクタを使用しない
68
70
 
69
71
  ```php
70
72
 
@@ -90,4 +92,54 @@
90
92
 
91
93
 
92
94
 
95
+
96
+
97
+ しかし、下記サイト内のサンプルプログラムでは、
98
+
99
+ 次のようにコンストラクタを用いて、初期化を行っています。
100
+
101
+ https://www.javadrive.jp/php/member/index6.html
102
+
103
+ ```php
104
+
105
+ $tv1 = new Television();
106
+
107
+ print('現在のチャンネルは'.$tv1->getChannel().'<br>');
108
+
109
+
110
+
111
+ class Television{
112
+
113
+ private $channelNo;
114
+
115
+ function __construct(){
116
+
117
+ $this->channelNo = 8;
118
+
119
+ }
120
+
121
+ function getChannel(){
122
+
123
+ return $this->channelNo;
124
+
125
+ }
126
+
127
+ }
128
+
129
+ ```
130
+
131
+
132
+
133
+ これは、何かしらの意図があって、コンストラクタによる初期化を行っているのでしょうか?
134
+
135
+
136
+
137
+ つまり、インスタンス化時にプロパティの値が毎回同じになる場合(引数が必要ない場合)であったとしても、
138
+
139
+ コンストラクタで初期化を行ったほうが良い理由は、あるのでしょうか?
140
+
141
+ また、それは、どのような理由なのでしょうか?
142
+
143
+
144
+
93
145
  ご回答よろしくおねがいします。

3

構成の変更

2020/04/16 01:26

投稿

you_san
you_san

スコア4

test CHANGED
File without changes
test CHANGED
@@ -2,39 +2,41 @@
2
2
 
3
3
 
4
4
 
5
- ンスタンスの初期化は、下記のように
5
+ ンストラクタは、
6
6
 
7
- ンストラクを使用て初期化すのが
7
+ クラスでインスタンス化た際に実行され
8
8
 
9
- 一般的だと認識しています。
9
+ 初期化のための関数だと認識しています。
10
10
 
11
11
 
12
12
 
13
- ### コンストラクタを使用した初期化
13
+ ### コンストラクタによる初期化
14
14
 
15
15
  ```php
16
16
 
17
- class Menu {
17
+ $tv1 = new Television();
18
18
 
19
- public $name;
19
+ print('現在のチャンネルは'.$tv1->getChannel().'<br>');
20
20
 
21
- public function __construct() {
22
21
 
23
- $this->name = '太郎';
24
22
 
25
- }
23
+ class Television{
26
24
 
27
- public function hello() {
25
+ private $channelNo;
28
26
 
29
- echo '私は'.$this->name.'です';
27
+ function __construct(){
30
28
 
29
+ $this->channelNo = 8;
30
+
31
- }
31
+ }
32
+
33
+ function getChannel(){
34
+
35
+ return $this->channelNo;
36
+
37
+ }
32
38
 
33
39
  }
34
-
35
- $name = new Menu();
36
-
37
- $name->hello();
38
40
 
39
41
  ```
40
42
 
@@ -46,48 +48,46 @@
46
48
 
47
49
  【質問1】
48
50
 
51
+ クラスに引数がなかった場合、
52
+
49
- 下記のように、引数のないインスタンス生成した際に、
53
+ 下記のように、ンストラクタをわざわざ作らなくても良いのではないか?
54
+
55
+ と考えてしまっています。
56
+
57
+
58
+
59
+ クラスに引数がない場合に、
50
60
 
51
61
  コンストラクタを使用せずに初期化をすることは、問題はあるのでしょうか?
52
62
 
63
+ また、どのような問題があるのでしょうか?
64
+
65
+
66
+
53
- ### コンストラクタを使用しない初期化
67
+ ### コンストラクタを使用しない
54
68
 
55
69
  ```php
56
70
 
57
- class Menu {
71
+ $tv1 = new Television();
58
72
 
59
- public $name = '太郎';
73
+ print('現在のチャンネルは'.$tv1->getChannel().'<br>');
60
74
 
61
- public function hello() {
62
75
 
63
- echo '私は'.$this->name.'です';
64
76
 
77
+ class Television{
78
+
79
+ private $channelNo = 8;
80
+
81
+ function getChannel(){
82
+
83
+ return $this->channelNo;
84
+
65
- }
85
+ }
66
86
 
67
87
  }
68
-
69
- $name = new Menu();
70
-
71
- $name->hello();
72
88
 
73
89
  ```
74
90
 
75
91
 
76
92
 
77
- 【質問2】
78
-
79
- 上記の方法で初期化を行った場合、問題があるとしたらどのような問題があるのでしょうか?
80
-
81
-
82
-
83
- 【質問3】
84
-
85
- 引数のないインスタンスの初期化方法は、上記で書かせていただいた、
86
-
87
- 「コンストラクタを使用した初期化」と「コンストラクタを使用しない初期化」の
88
-
89
- どちらを行うのが一般的なのでしょうか?
90
-
91
-
92
-
93
93
  ご回答よろしくおねがいします。

2

初心者アイコン追加

2020/04/16 00:52

投稿

you_san
you_san

スコア4

test CHANGED
@@ -1 +1 @@
1
- 【初心者】引数のないインスタンスを初期化する方法。コンストラクタについて。
1
+ 引数のないインスタンスを初期化する方法。コンストラクタについて。
test CHANGED
File without changes

1

質問文章の構成を変更。

2020/04/10 09:57

投稿

you_san
you_san

スコア4

test CHANGED
File without changes
test CHANGED
@@ -1,54 +1,14 @@
1
- インスタンス生成時の初期化について質問です
1
+ インスタンス生成時の初期化について質問させてください
2
2
 
3
3
 
4
4
 
5
- 【質問1】
5
+ インスタンスの初期化は、下記のように
6
6
 
7
- 引数のないインスタンス生成た際に、
7
+ ンストラクタを使用て初期化するのが
8
8
 
9
- コンストラクタを使用せずに初期化をすることは、問題はあるのでしょうか?
10
-
11
- (下記「コンストラクタを使用初期化」参照)
9
+ 一般的だと認識ます。
12
10
 
13
11
 
14
-
15
- 【質問2】
16
-
17
- また、問題があるとしたらどのような問題があるのでしょうか?
18
-
19
-
20
-
21
- 【質問3】
22
-
23
- また、引数のないインスタンスの初期化方法は、「コンストラクタを使用した初期化」と「コンストラクタを使用しない初期化」のどちらを行うのが一般的なのでしょうか?(コードは下記参照)
24
-
25
-
26
-
27
- ご回答よろしくおねがいします。
28
-
29
-
30
-
31
- ### コンストラクタを使用しない初期化
32
-
33
- ```php
34
-
35
- class Menu {
36
-
37
- public $name = '太郎';
38
-
39
- public function hello() {
40
-
41
- echo '私は'.$this->name.'です';
42
-
43
- }
44
-
45
- }
46
-
47
- $name = new Menu();
48
-
49
- $name->hello();
50
-
51
- ```
52
12
 
53
13
  ### コンストラクタを使用した初期化
54
14
 
@@ -77,3 +37,57 @@
77
37
  $name->hello();
78
38
 
79
39
  ```
40
+
41
+
42
+
43
+ その上で、質問させてください。
44
+
45
+
46
+
47
+ 【質問1】
48
+
49
+ 下記のように、引数のないインスタンスを生成した際に、
50
+
51
+ コンストラクタを使用せずに初期化をすることは、問題はあるのでしょうか?
52
+
53
+ ### コンストラクタを使用しない初期化
54
+
55
+ ```php
56
+
57
+ class Menu {
58
+
59
+ public $name = '太郎';
60
+
61
+ public function hello() {
62
+
63
+ echo '私は'.$this->name.'です';
64
+
65
+ }
66
+
67
+ }
68
+
69
+ $name = new Menu();
70
+
71
+ $name->hello();
72
+
73
+ ```
74
+
75
+
76
+
77
+ 【質問2】
78
+
79
+ 上記の方法で初期化を行った場合、問題があるとしたらどのような問題があるのでしょうか?
80
+
81
+
82
+
83
+ 【質問3】
84
+
85
+ 引数のないインスタンスの初期化方法は、上記で書かせていただいた、
86
+
87
+ 「コンストラクタを使用した初期化」と「コンストラクタを使用しない初期化」の
88
+
89
+ どちらを行うのが一般的なのでしょうか?
90
+
91
+
92
+
93
+ ご回答よろしくおねがいします。