
一応、PHPマニュアルの「クラスとオブジェクト」の辺りは理解したつもりでいる者です。
最近OOPに手を出してみたのですが、いまいちOOPとはどういうものかがわからない状況です。
今まで手続き型しか知らなかったためか「関数で定義すればいいのでは」と考えてしまいます。
つまり「OOPのどこが便利なのかがわからない」と言う状況なのです。
ソースコードを示しながら解説されているサイトもありましたが、渡された値を処理して返すクラスだったりと、いまいちOOPの便利さが伝わってきません。
私が、趣味の域を脱しないと言うことに甘んじているのもあるかとは思いますが、皆さんがOOPを実践しようと思い立った際に参考にしたサイト等、あれば教えていただけませんでしょうか?
更に贅沢を言わせていただくと、実際的なコードを示しながら解説されているサイトがいいです。
教えて君ですが、どうぞよろしくお願いします。
No.3ベストアンサー
- 回答日時:
私もPHPから入った人間なので、OOPの必要性は良く分かりませんでした(今でも分かっていない?)。
もともとPHPはHTMLの中にプログラミングを書くものでしたので(今でもそうかな?)、それほど凝ったプログラミングと言うものは存在しませんでした。JavaScriptで出来ないような(DB連携やファイル保存等)サーバ側のスクリプトを補完するような感じでしょうか。Perl等のいわゆるCGIは、プログラムがHTMLを出力する、と言う感じですが、PHPはHTMLの中にちょこちょこ、って感じですよね。この手軽さと、Apacheモジュールとして動くから比較的スピードも速い、と言う事もあってPHPが普及したのだと思います。しかし普及につれて大規模サイトでの利用や設計を考えると、どうしてもオブジェクト指向ということになってきたのでしょう。
ちょっと横道にそれましたが、一つの例を見てみましょう。PEARはPHPと共に配布される純正ライブラリですが、そこにDBクラスがあります。このDBクラスを利用すると、DBを変更した時にとても簡単に移行出来ます。
たとえば、当初データベースをPostgreSQLとしてプログラミングを組んでいましたので、DB接続にはpg_connect、クエリ発行にはpg_query、結果を配列にするにはpg_fetch_arrayとしていました。ところがMySQLに変更しなければならない事になり、その辺を書き換えないといけないことになりました。。。。grepして一括変換。。。でも出来るかもしれませんが、簡単ではありません。
DBクラスを使ってプログラミングしていれば最初の接続のところをほんのチョコッとだけ変えるだけですみます。
個人ではデータベースを変える、と言うような事はあまりないでしょうが、作ったプログラムを配布する場合、どんなDBにも対応出来るものが作れます。
参考まで。
# とはいえ、個人で作っているものはクラスにまで仕上げてないですけどね(笑。
楽ができるってことはいろいろと聞いてるんですけどね・・・
実際なかなか実感が沸かないですf^^;
まずは手をいろいろと動かしてみようと思ってます。御回答ありがとうござます。
No.2
- 回答日時:
個人的な意見なので参考にならないかもしれないですが。
私はJavaを勉強していたので、PHPではないのですが、
OOPについてはいろいろな本(Java向けのもの)を見ました。
その中で、一番OOPが理解できたのは、OOP専門の本よりもUMLを利用した設計についての解説書の方でした。
その結果、OOPはプログラミング技術の一部、というよりも設計技術の一部である、
という思いを持っています。
おっしゃる通り、プログラムを書く際にはOOPを取り入れなくても、
関数や構造化プログラムで問題なく動きますし、再利用性もあると思います。
ただ、どうしても技術的な側面が強くでてしまうので、専門家でないと分からない部分が多くなります。
一方、OOPは現実世界にあるモノを対象にして設計しようとするので、
比較的専門家以外の人でも分かる部分が多いのでは、と思います。
私もまだ未熟者なので、あまり偉そうなことはいえませんが、
OOPは、うまく取り入れることができればより良い開発ができる、と思っています。
あまり答えになっていないですね・・・
あくまで参考までに。
No.1
- 回答日時:
がると申します。
OOに関しては、実際に現場で使うために、オブジェクト指向の実践講座とかもWeb上で書いていたりします。
で…「OOPのどこが便利なのかがわからない」はよく耳にする話なのですが。
ソースコードよりも「便利な実例」のほうがわかりやすいかもしれません。
OOPの一番便利なのは「作った後に仕様変更が発生した場合」と「多人数で開発しているとき」なので。
そのあたりの経験が薄いと仮定すると、ちょっと実感しにくいかもしれません。
以上あんまり参考にならん話で恐縮ですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- メルカリ メルカリのキャンセルに関して 5 2022/09/21 12:32
- オープンソース IT用語、ソースとオブジェクト、改変と翻訳と翻案の違いなど どのようにりかいすればよいのですか 1 2022/09/09 10:02
- IT・エンジニアリング バックエンドエンジニアに転職 2 2022/04/07 00:51
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- その他(プログラミング・Web制作) このWEB用語、WEB文章、意味が分かりますか? 理解できない人が多いようなんですが・・・ 7 2022/10/22 09:13
- 友達・仲間 過去の同級生の気持ちについて 1 2023/01/15 12:47
- 発達障害・ダウン症・自閉症 発達障害や人格に関わる病気の疑いがありますか? 1 2022/07/26 16:51
- 消費者問題・詐欺 駐車場調べ隊というサイトで、会員登録してましたが 無料期間で退会するためサイトで申し込みしたところ 2 2023/06/03 23:22
- ハッキング・フィッシング詐欺 フィッシング詐欺 1 2023/05/12 03:59
- ハッキング・フィッシング詐欺 フィッシング詐欺 1 2023/05/12 18:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
OOPの実践の入門に良いサイトは...
-
インタフェースとは
-
グローバル変数について
-
「クラス関数」「メンバ関数」...
-
Smartyの変数について
-
配列とオブジェクトの違い
-
phpのクラスにて別ファイルの変...
-
$_SESSION 有効期限をブラウザ...
-
Makefile.inとMakefile.am
-
リンクされているかの確認
-
wordpressの記事をカスタマイズ...
-
GETの値について
-
PHPをインストールしてみた...
-
PHPで特定のURLにジャンプす...
-
ファイルが開けない問題について
-
PHPを使ったリダイレクトを教え...
-
PHP で各種設定ファイルをイン...
-
PHPのif文でその処理を途中で抜...
-
php5のフォーム
-
OKwebと教えてgooとは同じ?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「クラス関数」「メンバ関数」...
-
PHP4、PHP5 1ファイル複数クラ...
-
phpのクラスにて別ファイルの変...
-
ラッパークラスって何ですか?
-
ワードプレスではPHPをどこまで...
-
class定義のphpをファイル分割...
-
ユーザ定義関数にデフォルト引...
-
php と perl
-
POSTとGET
-
PHP オートローダーについて
-
PHPでオブジェクト指向開発して...
-
配列とオブジェクトの違い
-
Smartyの変数について
-
正規表現について
-
phpのオブジェクトの使用方法に...
-
【PHP】set・getの使用について
-
DirectoryIteratorクラスについて
-
require_onceについて
-
クラスについて
-
クラスの生成の仕方
おすすめ情報