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