PHPオブジェクト指向基礎
オブジェクト指向
PHPとオブジェクト指向
当初のPHPはオブジェクト指向の考えは一切なく、完全な手続型言語として誕生しました。
PHPは修得が容易であるとよく言われます。
構文も比較的分かりやすく、また型を意識する必要がない為に初心者にもとっつきやすい事が一つの理由です。
標準関数もたくさん存在し、コンパイルも必要ない。そしてWEBアプリ開発に特化している。Javaなどに比べて開発にかかる時間が短くできる。
そんなことでWEB言語としては一気に普及したのです。
しかし世の主流言語がオブジェクト指向言語へシフトしていく流れがあり、そんな中でPHPもバージョン3でオブジェクト指向に対応しました。
PHPのオブジェクト指向は後付のものなのです。
なのでJavaなどに代表されるオブジェクト指向言語には到底及ばず、かなり中途半端なものでした。
その後、PHP4、PHP5とバージョンアップのたびにオブジェクト指向部分の強化が図られ、
現在のバージョンではかなり本格的にオブジェクト指向実装が可能なところまで来ています。
バージョンアップは結構頻繁に行われていますが、
ここ最近のバージョンアップはオブジェクト指向の強化がメインになっています。
この先もどんどんとオブジェクト指向化が進んでいくと思われます。
オブジェクト指向を採用するか否か
オブジェクト指向は大規模開発向けというイメージがあると思います。
「こんな小さいプログラムでオブジェクト指向にする必要あるの?」っていう疑問はよく聞かれます。
正直、小さいプログラムほどオブジェクト指向のメリットは現れません。
オブジェクト指向にするデメリットってなんでしょうか。
コーディング量が増えるという事に尽きると思います。
これをデメリットと感じるならオブジェクト指向にする必要はありません。
オブジェクト指向を取り入れるか否かは「やりたい」と思えるかどうかだと思います。
コーディング量が増えるから嫌だというならオブジェクト指向は覚えるだけ無駄になります。
逆にコーディング量が増えるのを分かった上でやりたいというなら、メリットは無くともやるべきだと思います。
実際のところ、小さなプログラムでオブジェクト指向を取り入れた場合、
構造化プログラミングと比べても実質、なんら変わらないと思います。
それでも、オブジェクト指向はより「楽しい」ので、それだけでメリットではないでしょうか。
どうすれば効率的になるか、とかを考える楽しさがあります。
プログラムもスッキリして綺麗になります。
少しでもやってみようという気持ちがあるなら是非一度手を付けてみてください。
オブジェクト指向の基本概念
オブジェクト指向においては「クラス」というものが基本になります。
クラスについては後で詳しく説明しますが、プログラミング的に見ると、ある関連性のある処理のかたまりと考えてください。
この関連性とは、ある「処理対象」についての処理という括りです。
クラスは変数と関数を持ちます。
普通にPHPを書く場合ですが、
当然変数を使用し、処理の流れを上から下に向かって流れるように書いていくと思います。
そして同じような処理が複数個所で発生する場合、関数として定義し、それを呼び出したりします。
対してオブジェクト指向では、
クラスと呼ばれる枠組みの中に、変数や関数を閉じ込めるような形になります。
そしてクラスはある物事に特化した処理単位と考えます。
例えばショッピングサイトで考えてみましょう。
ショッピングサイトにはどんな「物事」が存在するでしょうか。
商品、会員、カート、購入履歴・・・いろいろ考えられると思います。
このそれぞれについてクラスを作ります。
例えば「商品クラス」です。
商品クラスには、「商品」として必要な変数や処理を持たせます。
そして商品に関連する処理は商品クラスに任せます。
そしてメインロジックからは商品クラスの処理を呼び出し、結果を受け取る。
そういうようなことを繰り返してプログラムとして組み上げていきます。
始めは少し面倒な感じがするかもしれませんが、
プログラム全体が構造的に整理され、とても分かりやすいプログラムになるはずです。


