プロが教える店舗&オフィスのセキュリティ対策術

間違えて違うカテゴリーに質問してしまったので、
そちらを削除して、質問させていただきます(レスも幸いなかったため)。

PHPを勉強して1ヶ月の初心者です。

ホームページを作ろうとして、本に書いてあったプログラムを元に、
付け足したり、削ったりしていました。
そして、プログラムが長くなってきたので、外部ファイルに処理を分割してみました。

どの本にも、「クラス」「オブジェクト指向」という言葉が強調されていたので、
とりあえずクラスにしてみました。
しかし、クラスの中で処理をした変数を取り出すのが手間に感じます
(クラス内では「$this->変数名」、クラス外では「$クラス名->変数名」と書く手間が・・・)。

本の中には、クラスを使わずに、
ユーザー定義関数のみのfunctionをまとめた外部ファイルを
作成している例が多い気がします。

そこで質問なのですが、
処理を分割して外部ファイルにするとき、
「メソッドをまとめたクラス」にした方がいいのでしょうか?
それとも、「ユーザー定義関数をまとめたもの」にした方がいいのでしょうか?

また、「こうゆう場合は、クラスにした方がいい」「ユーザー定義関数にした方がいい」などの
条件がありましたら、教えていただきたいです。

本やネットを調べても、使い分けについて書かれているページがなく、

今後の作成のためにも、ぜひ知っておきたいです。
すべてクラスにした方が今後よいようでしたら、全部クラスのままで作れるよう、
慣れていきたいとも思ってもいます。
よろしくお願いします。

A 回答 (2件)

この質問の回答は本1冊必要です。



共通のデータを持つ関数群を1つのクラスにする、
という考え方がいいでしょう。
つまり、グローバル変数を持ちたくなったらクラ
ス化を考える、ということです。

グローバル変数は、関数外の変数と捉えたらいい
でしょう。
複数の関数が同じデータを複数使い、引数でデー
タを渡すには煩雑すぎ、構造化(struct)で渡し
たくなったり、引数で渡さないで関数外の変数を
共通に使いたくなる場合です。

それらをクラスにまとめ、変数はクラス内のメン
バ変数にする訳です。

その意味、理由は説明する文字数が多過ぎて書け
ません。
    • good
    • 0
この回答へのお礼

いくつかのクラスで、$_SESSIONを持ちまわしていたときは、
変数の扱いがとても楽でした。
そうゆう、グローバル変数が増えてきた場合は、
クラスにしていくとよいのですね。

ありがとうございます^^

お礼日時:2008/11/05 02:27

>こうゆう場合は、クラスにした方がいい



・複雑なことをまとめたいとき
・一度つくったコードを再利用したいとき
※いろんな競合に嫌気がさして慣れてくるとほとんどクラスを
つかうことになります。

>ユーザー定義関数にした方がいい

・簡単なことをするとき
※「hello world」を表示するのにクラスはいりませんね。
    • good
    • 0
この回答へのお礼

競合、というのは初めて見る言葉でした。
この場合、メインのphpとクラスの間で、
同じ変数名をつけても競合が起きないのを、
逆に利用する、という意味でよろしいでしょうか。

本の中では、MySQLへの処理をクラスにまとめていました。
MySQLへの命令文を、一括して$sqlで処理していたので、
それも同じ意味があったのだろうな、と今、気づきました。

複雑なものについては、まだ経験がないのでわかりませんが、
心に留めておくようにします。

ありがとうございます!

お礼日時:2008/11/05 02:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!