- ベストアンサー
ユーザー定義関数とクラスの違いとは?
間違えて違うカテゴリーに質問してしまったので、 そちらを削除して、質問させていただきます(レスも幸いなかったため)。 PHPを勉強して1ヶ月の初心者です。 ホームページを作ろうとして、本に書いてあったプログラムを元に、 付け足したり、削ったりしていました。 そして、プログラムが長くなってきたので、外部ファイルに処理を分割してみました。 どの本にも、「クラス」「オブジェクト指向」という言葉が強調されていたので、 とりあえずクラスにしてみました。 しかし、クラスの中で処理をした変数を取り出すのが手間に感じます (クラス内では「$this->変数名」、クラス外では「$クラス名->変数名」と書く手間が・・・)。 本の中には、クラスを使わずに、 ユーザー定義関数のみのfunctionをまとめた外部ファイルを 作成している例が多い気がします。 そこで質問なのですが、 処理を分割して外部ファイルにするとき、 「メソッドをまとめたクラス」にした方がいいのでしょうか? それとも、「ユーザー定義関数をまとめたもの」にした方がいいのでしょうか? また、「こうゆう場合は、クラスにした方がいい」「ユーザー定義関数にした方がいい」などの 条件がありましたら、教えていただきたいです。 本やネットを調べても、使い分けについて書かれているページがなく、 今後の作成のためにも、ぜひ知っておきたいです。 すべてクラスにした方が今後よいようでしたら、全部クラスのままで作れるよう、 慣れていきたいとも思ってもいます。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
この質問の回答は本1冊必要です。 共通のデータを持つ関数群を1つのクラスにする、 という考え方がいいでしょう。 つまり、グローバル変数を持ちたくなったらクラ ス化を考える、ということです。 グローバル変数は、関数外の変数と捉えたらいい でしょう。 複数の関数が同じデータを複数使い、引数でデー タを渡すには煩雑すぎ、構造化(struct)で渡し たくなったり、引数で渡さないで関数外の変数を 共通に使いたくなる場合です。 それらをクラスにまとめ、変数はクラス内のメン バ変数にする訳です。 その意味、理由は説明する文字数が多過ぎて書け ません。
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
>こうゆう場合は、クラスにした方がいい ・複雑なことをまとめたいとき ・一度つくったコードを再利用したいとき ※いろんな競合に嫌気がさして慣れてくるとほとんどクラスを つかうことになります。 >ユーザー定義関数にした方がいい ・簡単なことをするとき ※「hello world」を表示するのにクラスはいりませんね。
お礼
競合、というのは初めて見る言葉でした。 この場合、メインのphpとクラスの間で、 同じ変数名をつけても競合が起きないのを、 逆に利用する、という意味でよろしいでしょうか。 本の中では、MySQLへの処理をクラスにまとめていました。 MySQLへの命令文を、一括して$sqlで処理していたので、 それも同じ意味があったのだろうな、と今、気づきました。 複雑なものについては、まだ経験がないのでわかりませんが、 心に留めておくようにします。 ありがとうございます!
お礼
いくつかのクラスで、$_SESSIONを持ちまわしていたときは、 変数の扱いがとても楽でした。 そうゆう、グローバル変数が増えてきた場合は、 クラスにしていくとよいのですね。 ありがとうございます^^