• ベストアンサー

PHPでのClass使用について

これまで社内で1人でPHPコーディングを担当していたので、複数人での開発を経験した事がなく、Classを使用した事がありません。 PHPでもClassを使用するのが主流かと思うのですが、Classの有用性が今ひとつ理解出来ずにいます。 開発用のライブラリは用意しているのですが、「接続用function」などfunctionのみを使用してコードを纏めています。 現状このやり方で全く困っていないのですが、Classを使用する事でどんなメリットがあるのでしょうか? 使い慣れていないせいなのでしょうが、Class化する事で機能を纏め過ぎてより面倒臭くなっているような気がします…。

質問者が選んだベストアンサー

  • ベストアンサー
noname#94983
noname#94983
回答No.2

>functionのみを使用してコードを纏めています。 これは、たぶん規模が小さいからだろうと思う。 例えば、よく使う処理をライブラリなどにまとめて利用することを考えてみる。こういう処理はこのライブラリ、ああいう処理はあのライブラリ、というようにしてライブラリ化し、いつでもそれを利用できるようにした、とする。 いろいろライブラリを作って、全部で10ぐらいできた。関数は300ぐらい、それらで利用するグローバル変数も数百はある。そんな状態になったとしよう。となったとき、すべてのライブラリで、使用している関数や変数がバッティングしないという保証はあるだろうか? あるいは、新たにライブラリを作るとき、新たなプロジェクトでそれらのライブラリを利用するとき、作る関数や変数が、それらライブラリの中で絶対に使われていないという保証はあるだろうか。 まぁ、命名規則などを考えることでバッティングしないように整理することはできるが、そうするとそれぞれの名前がやたらと長くなってしまったりする。いずれにしても、数が増えると収集がつかなくなる。 更にいえば、自分が作ったライブラリでなく、オープンソースのライブラリやフレームワークになると、この問題はもっと深刻だ。他人が書いた膨大なソースコードで、どういう関数や変数名が使われているかきちんと把握しないといけない。もし、同じ名前の関数やグローバル変数を書いてしまったら、バグを引き起こしてしまう。こういうバグは退治するのが大変だ。なにしろ、書いたコードは正しいんだから。 クラスとしてまとめれば、この心配がなくなる。たとえ同じ名前のメソッド(関数)や変数を作ったとしても、クラスが違えばまったく何の問題もない。更に、PHP 5.3からさポートされる名前空間を使えば、同じ名前のクラスを定義してもまったく問題ない。 要するに、クラスを使わない開発は、関数名から変数名から、すべてをプログラマ自身がきっちり管理しないといけないことになる。それは、小規模ならいいが、大規模になると大変になる、ということ。本格的なフレームワークなんかになると、100以上のクラス、下手をすると1000以上のメソッドが使われる。それらが、クラスにまとめられずにすべてただの関数だった場合を想像してほしい。それらと決して同じ名前の関数や変数は書いてはならないんだから、これは神経を使うだろう。 汎用性のない、一回こっきりのコードで、さして処理も複雑でないなら、クラスにする必要はない。オレもせいぜいトータルで1000行以内ぐらいなら、クラスを定義せず、全部関数だけで済ませることも多い。ただ、「これは汎用化して何度も使えるようにできるな」と思ったら、クラスにする。そのほうが、最終的には楽だからだ。クラスを、「これまでの関数に置き換わるもの」と考えないほうがいい。特にPHPの場合、「関数では大変になってきたら、クラスというもっと便利なものが使える」という程度に考えておけばいい気がするな。

stn13
質問者

お礼

現在1人でやっているため、関数や変数のバッティングが起こらず、不便に思っていないだけなんですね。 この先転職などを考えると、Classの利用は必須になるのだと理解出来ました。 不慣れで不便に思っても使えるようにしておく必要がありそうですね。 詳しく解説いただきましてありがとうございました。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>使い慣れていないせい そうですね。もしくはきちんとしたclassの概念を理解していないのでしょう。 PEARのライブラリなどいくつかつかってみると、class化の必然性が わかると思いますよ

stn13
質問者

お礼

PEARライブラリなども改造が面倒で、似たようなものを自作してしまっていました。 PEARも取り入れられるよう取り組んでみます。

関連するQ&A