teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

11

文言修正

2020/04/16 01:50

投稿

you_san
you_san

スコア4

title CHANGED
File without changes
body CHANGED
@@ -30,8 +30,8 @@
30
30
  【質問】
31
31
  インスタンス化時のプロパティの初期値が毎回同じ値で問題ない場合、
32
32
  (上記サンプルプログラムで言えば、プロパティの初期値が毎回「$channelNo = 8;」で問題ない場合)
33
- 下記のようにコンストラクタを作るらずに、
33
+ 下記プログラムのようにコンストラクタを作るらずに、
34
- プロパティに値を直接代入($channelNo = 8;のように代入)してしまえば問題ないのではないか?
34
+ プロパティに初期値を直接代入($channelNo = 8;のように代入)してしまえば問題ないのではないか?
35
35
  と考えてしまっています。
36
36
  ```php
37
37
  $tv1 = new Television();
@@ -66,11 +66,11 @@
66
66
 
67
67
  これは、何かしらの意図があって、コンストラクタによる初期化を行っているのでしょうか?
68
68
 
69
- つまり、インスタンス化時にプロパティの初期値が毎回同じ場合
69
+ つまり、インスタンス化時にプロパティの初期値が毎回同じで問題場合
70
- (今回のサンプルプログラムでいえば、「$channelNo = 8;」場合)
70
+ (今回のサンプルプログラムでいえば、初期値は「$channelNo = 8;」で問題場合)
71
71
  であったとしても、
72
72
 
73
- プロパティに直接値を代入するのではなく、
73
+ プロパティに直接初期値を代入するのではなく、
74
74
  コンストラクタで初期化を行ったほうが良い理由は、あるのでしょうか?
75
75
  また、それは、どのような理由なのでしょうか?
76
76
 

10

文言修正

2020/04/16 01:50

投稿

you_san
you_san

スコア4

title CHANGED
File without changes
body CHANGED
@@ -28,8 +28,8 @@
28
28
  その上で、質問させてください。
29
29
 
30
30
  【質問】
31
- インスタンス化時のプロパティ値が毎回同じ値で問題ない場合、
31
+ インスタンス化時のプロパティの初期値が毎回同じ値で問題ない場合、
32
- (上記サンプルプログラムで言えば、プロパティ値が毎回「$channelNo = 8;」で問題ない場合)
32
+ (上記サンプルプログラムで言えば、プロパティの初期値が毎回「$channelNo = 8;」で問題ない場合)
33
33
  下記のようにコンストラクタを作るらずに、
34
34
  プロパティに値を直接代入($channelNo = 8;のように代入)してしまえば問題ないのではないか?
35
35
  と考えてしまっています。
@@ -66,7 +66,7 @@
66
66
 
67
67
  これは、何かしらの意図があって、コンストラクタによる初期化を行っているのでしょうか?
68
68
 
69
- つまり、インスタンス化時にプロパティの値が毎回同じになる場合
69
+ つまり、インスタンス化時にプロパティの初期値が毎回同じになる場合
70
70
  (今回のサンプルプログラムでいえば、「$channelNo = 8;」となる場合)
71
71
  であったとしても、
72
72
 

9

文言修正

2020/04/16 01:46

投稿

you_san
you_san

スコア4

title CHANGED
File without changes
body CHANGED
@@ -78,10 +78,9 @@
78
78
 
79
79
 
80
80
  【現時点で、考えていること】
81
- 現時点で、考えている理由しては、
81
+ 現時点で、考えているとは、
82
82
  コンストラクタを使用することで、
83
83
 
84
- 「こで初期化を行っているんだよ!
84
+ こで初期化を行っているかがわかりやすくなる」
85
- というのがわかりやすくなる」
86
85
 
87
- という理由のみが思い付いている点です。
86
+ です。

8

補足追加

2020/04/16 01:42

投稿

you_san
you_san

スコア4

title CHANGED
File without changes
body CHANGED
@@ -74,4 +74,14 @@
74
74
  コンストラクタで初期化を行ったほうが良い理由は、あるのでしょうか?
75
75
  また、それは、どのような理由なのでしょうか?
76
76
 
77
- ご回答よろしくおねがいします。
77
+ ご回答よろしくおねがいします。
78
+
79
+
80
+ 【現時点で、考えていること】
81
+ 現時点で、考えている理由としては、
82
+ コンストラクタを使用することで、
83
+
84
+ 「ここで初期化を行っているんだよ!
85
+ というのがわかりやすくなる」
86
+
87
+ という理由のみが思い付いている点です。

7

改行修正

2020/04/16 01:40

投稿

you_san
you_san

スコア4

title CHANGED
File without changes
body CHANGED
@@ -66,7 +66,10 @@
66
66
 
67
67
  これは、何かしらの意図があって、コンストラクタによる初期化を行っているのでしょうか?
68
68
 
69
+ つまり、インスタンス化時にプロパティの値が毎回同じになる場合
69
- つまり、インスタンス化時にプロパティの値が毎回同じになる場合(今回のサンプルプログラムでいえば、「$channelNo = 8;」となる場合)であったとしても、
70
+ (今回のサンプルプログラムでいえば、「$channelNo = 8;」となる場合)
71
+ であったとしても、
72
+
70
73
  プロパティに直接値を代入するのではなく、
71
74
  コンストラクタで初期化を行ったほうが良い理由は、あるのでしょうか?
72
75
  また、それは、どのような理由なのでしょうか?

6

文言追加

2020/04/16 01:34

投稿

you_san
you_san

スコア4

title CHANGED
File without changes
body CHANGED
@@ -67,6 +67,7 @@
67
67
  これは、何かしらの意図があって、コンストラクタによる初期化を行っているのでしょうか?
68
68
 
69
69
  つまり、インスタンス化時にプロパティの値が毎回同じになる場合(今回のサンプルプログラムでいえば、「$channelNo = 8;」となる場合)であったとしても、
70
+ プロパティに直接値を代入するのではなく、
70
71
  コンストラクタで初期化を行ったほうが良い理由は、あるのでしょうか?
71
72
  また、それは、どのような理由なのでしょうか?
72
73
 

5

文言追加

2020/04/16 01:33

投稿

you_san
you_san

スコア4

title CHANGED
File without changes
body CHANGED
@@ -66,7 +66,7 @@
66
66
 
67
67
  これは、何かしらの意図があって、コンストラクタによる初期化を行っているのでしょうか?
68
68
 
69
- つまり、インスタンス化時にプロパティの値が毎回同じになる場合(引数が必要ない場合)であったとしても、
69
+ つまり、インスタンス化時にプロパティの値が毎回同じになる場合(今回のサンプルプログラムでえば、「$channelNo = 8;」となる場合)であったとしても、
70
70
  コンストラクタで初期化を行ったほうが良い理由は、あるのでしょうか?
71
71
  また、それは、どのような理由なのでしょうか?
72
72
 

4

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

2020/04/16 01:31

投稿

you_san
you_san

スコア4

title CHANGED
File without changes
body CHANGED
@@ -1,10 +1,15 @@
1
- インスタンス生成時の初期化について質問させてください。
1
+ インスタンス生成時のコンストラクタによる初期化について質問させてください。
2
2
 
3
+ 【前提】
3
- コンストラクタは、
4
+ コンストラクタは、
4
- クラスインスタンス化た際に実行される
5
+ クラスからインスタンス化を行った際に
6
+ 自動的に1回だけ実行される初期化のための関数」
5
- 初期化のための関数だと認識しています。
7
+ と認識しています。
6
8
 
9
+ コンストラクタについては、下記の記事を参考にしました。
10
+ https://www.javadrive.jp/php/member/index6.html
11
+
7
- ### コンストラクタによる初期化
12
+ ### 上記記事内のコンストラクタによる初期化のサンプルプログラム
8
13
  ```php
9
14
  $tv1 = new Television();
10
15
  print('現在のチャンネルは'.$tv1->getChannel().'<br>');
@@ -22,26 +27,47 @@
22
27
 
23
28
  その上で、質問させてください。
24
29
 
25
- 【質問
30
+ 【質問】
26
- クラに引数がなかった場合、
31
+ インタンス化時のプロパティ値毎回同じ値で問題場合、
32
+ (上記サンプルプログラムで言えば、プロパティ値が毎回「$channelNo = 8;」で問題ない場合)
27
- 下記のようにコンストラクタをわざわざ作らなくても良いのではないか?
33
+ 下記のようにコンストラクタを作ずに、
34
+ プロパティに値を直接代入($channelNo = 8;のように代入)してしまえば問題ないのではないか?
28
35
  と考えてしまっています。
36
+ ```php
37
+ $tv1 = new Television();
38
+ print('現在のチャンネルは'.$tv1->getChannel().'<br>');
29
39
 
30
- クラスに引数がない場合に、
40
+ class Television{
31
- コンストラクタを使用せずに初期化をすることは、問題はあるのでしょうか?
41
+ private $channelNo = 8;
32
- また、どのような問題があるのでしょうか?
42
+ function getChannel(){
43
+ return $this->channelNo;
44
+ }
45
+ }
46
+ ```
33
47
 
48
+
49
+ しかし、下記サイト内のサンプルプログラムでは、
34
- ### コンストラクタを使しな
50
+ 次のようにコンストラクタを用いて、初期化を行っています。
51
+ https://www.javadrive.jp/php/member/index6.html
35
52
  ```php
36
53
  $tv1 = new Television();
37
54
  print('現在のチャンネルは'.$tv1->getChannel().'<br>');
38
55
 
39
56
  class Television{
40
- private $channelNo = 8;
57
+ private $channelNo;
58
+ function __construct(){
59
+ $this->channelNo = 8;
60
+ }
41
61
  function getChannel(){
42
62
  return $this->channelNo;
43
63
  }
44
64
  }
45
65
  ```
46
66
 
67
+ これは、何かしらの意図があって、コンストラクタによる初期化を行っているのでしょうか?
68
+
69
+ つまり、インスタンス化時にプロパティの値が毎回同じになる場合(引数が必要ない場合)であったとしても、
70
+ コンストラクタで初期化を行ったほうが良い理由は、あるのでしょうか?
71
+ また、それは、どのような理由なのでしょうか?
72
+
47
73
  ご回答よろしくおねがいします。

3

構成の変更

2020/04/16 01:26

投稿

you_san
you_san

スコア4

title CHANGED
File without changes
body CHANGED
@@ -1,47 +1,47 @@
1
1
  インスタンス生成時の初期化について質問させてください。
2
2
 
3
+ コンストラクタは、
3
- インスタンスの初期は、下記のよう
4
+ クラスでインスタンス化した際実行される
4
- コンストラクタを使用して初期化するのが
5
- 一般的だと認識しています。
5
+ 初期化のための関数だと認識しています。
6
6
 
7
- ### コンストラクタを使用した初期化
7
+ ### コンストラクタによる初期化
8
8
  ```php
9
+ $tv1 = new Television();
10
+ print('現在のチャンネルは'.$tv1->getChannel().'<br>');
11
+
9
- class Menu {
12
+ class Television{
10
- public $name;
13
+ private $channelNo;
11
- public function __construct() {
14
+ function __construct(){
12
- $this->name = '太郎';
15
+ $this->channelNo = 8;
13
- }
16
+ }
14
- public function hello() {
17
+ function getChannel(){
15
- echo '私は'.$this->name.'です';
18
+ return $this->channelNo;
16
- }
19
+ }
17
20
  }
18
- $name = new Menu();
19
- $name->hello();
20
21
  ```
21
22
 
22
23
  その上で、質問させてください。
23
24
 
24
25
  【質問1】
26
+ クラスに引数がなかった場合、
25
- 下記のように、引数のないインスタンス生成した際に、
27
+ 下記のように、ンストラクタをわざわざ作らなくても良いのではないか?
28
+ と考えてしまっています。
29
+
30
+ クラスに引数がない場合に、
26
31
  コンストラクタを使用せずに初期化をすることは、問題はあるのでしょうか?
32
+ また、どのような問題があるのでしょうか?
33
+
27
- ### コンストラクタを使用しない初期化
34
+ ### コンストラクタを使用しない
28
35
  ```php
29
- class Menu {
30
- public $name = '太郎';
31
- public function hello() {
36
+ $tv1 = new Television();
32
- echo 'は'.$this->name.'です';
37
+ print('現在のチャンネルは'.$tv1->getChannel().'<br>');
38
+
39
+ class Television{
40
+ private $channelNo = 8;
41
+ function getChannel(){
42
+ return $this->channelNo;
33
- }
43
+ }
34
44
  }
35
- $name = new Menu();
36
- $name->hello();
37
45
  ```
38
46
 
39
- 【質問2】
40
- 上記の方法で初期化を行った場合、問題があるとしたらどのような問題があるのでしょうか?
41
-
42
- 【質問3】
43
- 引数のないインスタンスの初期化方法は、上記で書かせていただいた、
44
- 「コンストラクタを使用した初期化」と「コンストラクタを使用しない初期化」の
45
- どちらを行うのが一般的なのでしょうか?
46
-
47
47
  ご回答よろしくおねがいします。

2

初心者アイコン追加

2020/04/16 00:52

投稿

you_san
you_san

スコア4

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

1

質問文章の構成を変更。

2020/04/10 09:57

投稿

you_san
you_san

スコア4

title CHANGED
File without changes
body CHANGED
@@ -1,22 +1,16 @@
1
- インスタンス生成時の初期化について質問です
1
+ インスタンス生成時の初期化について質問させてください
2
2
 
3
- 【質問1】
4
- 引数のないインスタンスを生成した際に
3
+ インスタンスの初期化は下記のように
5
- コンストラクタを使用せずに初期化をすることは、問題はあるのでしょうか?
6
- (下記「コンストラクタを使用しない初期化」参照)
4
+ コンストラクタを使用し初期化するのが
5
+ 一般的だと認識しています。
7
6
 
8
- 【質問2】
9
- また、問題があるとしたらどのような問題があるのでしょうか?
10
-
11
- 【質問3】
12
- また、引数のないインスタンスの初期化方法は、「コンストラクタを使用した初期化」と「コンストラクタを使用しない初期化」のどちらを行うのが一般的なのでしょうか?(コードは下記参照)
13
-
14
- ご回答よろしくおねがいします。
15
-
16
- ### コンストラクタを使用しない初期化
7
+ ### コンストラクタを使用し初期化
17
8
  ```php
18
9
  class Menu {
10
+ public $name;
11
+ public function __construct() {
19
- public $name = '太郎';
12
+ $this->name = '太郎';
13
+ }
20
14
  public function hello() {
21
15
  echo '私は'.$this->name.'です';
22
16
  }
@@ -24,17 +18,30 @@
24
18
  $name = new Menu();
25
19
  $name->hello();
26
20
  ```
21
+
22
+ その上で、質問させてください。
23
+
24
+ 【質問1】
25
+ 下記のように、引数のないインスタンスを生成した際に、
26
+ コンストラクタを使用せずに初期化をすることは、問題はあるのでしょうか?
27
- ### コンストラクタを使用し初期化
27
+ ### コンストラクタを使用しない初期化
28
28
  ```php
29
29
  class Menu {
30
- public $name;
31
- public function __construct() {
32
- $this->name = '太郎';
30
+ public $name = '太郎';
33
- }
34
31
  public function hello() {
35
32
  echo '私は'.$this->name.'です';
36
33
  }
37
34
  }
38
35
  $name = new Menu();
39
36
  $name->hello();
40
- ```
37
+ ```
38
+
39
+ 【質問2】
40
+ 上記の方法で初期化を行った場合、問題があるとしたらどのような問題があるのでしょうか?
41
+
42
+ 【質問3】
43
+ 引数のないインスタンスの初期化方法は、上記で書かせていただいた、
44
+ 「コンストラクタを使用した初期化」と「コンストラクタを使用しない初期化」の
45
+ どちらを行うのが一般的なのでしょうか?
46
+
47
+ ご回答よろしくおねがいします。