PHPで、メソッドやプロパティをインスタンスに持たせるのかクラスに持たせるのかでいつも悩むのですが、よい判断基準はありますでしょうか?


端的にいうと、staticにするか否かということです。
あるクラスのインスタンスを1つしか作らないケースでは特に悩みます。

ちなみに、staticメソッドの中では$thisが使えない等の文法的制約は一通り理解しているつもりです。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/05/29 20:15:07
  • 終了:2012/06/05 20:20:15

ベストアンサー

id:tdoi No.2

tdoi回答回数174ベストアンサー獲得回数752012/05/29 22:02:14

ポイント50pt

判断基準というほど厳密ではないですが、クラスの責務の考え方次第でしょうね。

シングルトンなオブジェクトであっても、データがカプセル化されていて、それに対する処理が必要ならば、そもそもstaticにすることができない訳ですから。
逆の言い方をするならば、名前空間の代わりにクラスを使う(処理に関するデータはすべて引数として渡し、メソッド間の依存関係がない)のであれば、staticの方がインスタンスを生成する必要がなくてよいかなと思います。

id:DQNEO

>名前空間の代わりにクラスを使うのであれば、staticの方がインスタンスを生成する必要がなくてよいかなと思います。

なるほど、やはりそうなんですね。
ありがとうございます!

2012/06/02 06:17:29

その他の回答(1件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982012/05/29 21:20:18

ポイント50pt

一回しか使わないんなら インスタンスでいいでしょう。
そのほうが 簡単だと思いますしね。

他1件のコメントを見る
id:DQNEO

どっちが簡単かというと、staticメソッドの方が簡単だと思います。
new しなくてよいわけですから。

MyClass::doSomething();

2012/05/29 21:34:03
id:taknt

私のプログラミングのモットーは

できるだけ わかりやすく、簡単に です。

2012/05/29 22:26:34
id:tdoi No.2

tdoi回答回数174ベストアンサー獲得回数752012/05/29 22:02:14ここでベストアンサー

ポイント50pt

判断基準というほど厳密ではないですが、クラスの責務の考え方次第でしょうね。

シングルトンなオブジェクトであっても、データがカプセル化されていて、それに対する処理が必要ならば、そもそもstaticにすることができない訳ですから。
逆の言い方をするならば、名前空間の代わりにクラスを使う(処理に関するデータはすべて引数として渡し、メソッド間の依存関係がない)のであれば、staticの方がインスタンスを生成する必要がなくてよいかなと思います。

id:DQNEO

>名前空間の代わりにクラスを使うのであれば、staticの方がインスタンスを生成する必要がなくてよいかなと思います。

なるほど、やはりそうなんですね。
ありがとうございます!

2012/06/02 06:17:29

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません