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

回答編集履歴

2

前提の追加

2021/11/07 08:38

投稿

yukapome789
yukapome789

スコア361

answer CHANGED
@@ -6,12 +6,14 @@
6
6
  > どのようにすれば、どの画面でも使いまわせるようにできるでしょうか?
7
7
 
8
8
  画面というより、配列をどのクラスからも使えるようにしたい、ということでよろしいですか?
9
+ `$cardInstanceList` を、どこかのクラス内に定義するかそうじゃないかで話が変わってくるので
10
+ クラス内に定義する前提で回答しますね。
9
11
 
10
- であれば「static」を使う方法と、「const」を使う方法があります。
12
+ オブジェクトを使い回す方法には「static」を使う方法と、「const」を使う方法があります。
11
- staticはオブジェクトをシングルトンとして扱うための修飾子ですが上書き可能なため
13
+ staticはオブジェクトをシングルトンとして扱うための修飾子ですが上書き可能なため危険です。
12
- constを使って定義する方法が良いかなと思います。
14
+ なのでconst(上書き不可変数とする修飾子)を使って定義する方法が良いかなと思います。
13
15
 
14
- ~~ただし配列内ではnewできないため、アプリケーション起動時などでクラスのコンストラクタで、プロパティの配列($cardInstanceList)にカードの情報をセットしてあげる必要があります。~~
16
+ ただしクラスプロパティの配列内ではnewできないため、アプリケーション起動時などでクラスのコンストラクタで、プロパティの配列($cardInstanceList)にカードの情報をセットしてあげる必要があります。
15
17
  ※クラス外であればnewできるようです。
16
18
 
17
19
  質問への回答は上記ですが、煩雑になるので、、もし自分が実装するとしたら、

1

コメントで指摘された誤りの修正

2021/11/07 08:38

投稿

yukapome789
yukapome789

スコア361

answer CHANGED
@@ -1,5 +1,6 @@
1
- まず、配列内でnewはできないです。
1
+ ~~まず、配列内でnewはできないです。~~
2
+ ※コメントで指摘いただいたのですが配列内でnewできないのはクラスプロパティのみで、クラス外のプロパティであれば可能なようです。
2
- 参考: [【PHP】クラスプロパティの値には、動的な値を代入することができないようです。](https://qiita.com/H40831/items/15ebfbf7d9c05001b6df)
3
+ 参考: [【PHP】クラスプロパティの値には、動的な値を代入することができないようです。](https://qiita.com/H40831/items/15ebfbf7d9c05001b6df)~~
3
4
 
4
5
  > イメージとしては以下のような配列をどの画面でも使いたいです。
5
6
  > どのようにすれば、どの画面でも使いまわせるようにできるでしょうか?
@@ -10,7 +11,8 @@
10
11
  staticはオブジェクトをシングルトンとして扱うための修飾子ですが上書き可能なため
11
12
  constを使って定義する方法が良いかなと思います。
12
13
 
13
- ただし配列内ではnewできないため、アプリケーション起動時などでクラスのコンストラクタで、プロパティの配列($cardInstanceList)にカードの情報をセットしてあげる必要があります。
14
+ ~~ただし配列内ではnewできないため、アプリケーション起動時などでクラスのコンストラクタで、プロパティの配列($cardInstanceList)にカードの情報をセットしてあげる必要があります。~~
15
+ ※クラス外であればnewできるようです。
14
16
 
15
17
  質問への回答は上記ですが、煩雑になるので、、もし自分が実装するとしたら、
16
18
  `new Card("a")` これだけでインスタンス生成できるなら、都度することになってもそれが一番綺麗かなと思いました。