【PHP】クラス(class)とは?
今回はPHPでクラス(class)を扱う上で、まず知っておかなければならない概要を整理してみます。
まず「PHPはオブジェクト指向のプログラミング言語」と呼ばれています。初心者が聞くとなんのこっちゃ?ってなりますね。実際私もそうでした(;^ω^) そしてそれがクラスとどう関係あるのでしょうか?
クラスを学んだり、実装してみる前にまずはその前に知っておくべきことを整理していきましょう。
オブジェクトとは?
まずは「オブジェクト」とはどのようなものか理解しておきましょう。
オブジェクトとは簡単に言ってしまうと、「変数とメソッド(関数)がセットになったもの」として捉えることができます。例えば下記のようなコードがあったとします。
|
1 2 3 4 5 6 |
<?php $Player1["name"] = "Tanaka"; $Player1["hp"] = 50; $Player1["mp"] = 20; print_r($Player1); ?> |
ゲームのプレイヤーの名前、HP、MPの情報を連想配列で情報を保管していると仮定します。実行結果は以下の通りです。
![]()
では各情報を表示したり、変更したいとき、利便性を考えて独自の関数を用意したいと考えます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php $Player1["name"] = "Tanaka"; $Player1["hp"] = 50; $Player1["mp"] = 20; function rewrite($a){ return $a; } function denote($a){ echo $a; } $Player1["name"] = rewrite("nakada"); $Player1["hp"] = rewrite(35); print_r($Player1); denote($Player1["name"]); ?> |
今回は簡単な例ですが「function rewrite()」で書き換え、「function denote()」で情報の表示という関数を作ってみました。実行結果は下記の画像の通り。
情報が書き換わり、情報を表示する関数が実装できましたね。
オブジェクトとはつまり、このような情報を持った変数と、その変数を利用して処理を行うメソッド(関数)をまとめたものを指します。今回でいうと「$Player1」が変数、「rewrite()」と「denote()」がメソッド(関数)、そしてこの二つをまとめて「オブジェクト」と呼ぶのです。
「オブジェクト」がどのようなものか、なんとなくですが分かってきたような気がしますね(‘ω’)
PHPはオブジェクト指向のプログラミング言語
オブジェクト指向とは、これまた簡潔に言ってしまうと、「各情報をオブジェクト形で保持し、変更や処理に対して対応しやすく設計する」ことです。
上記の例で想像してみましょう。
先程は一人のプレイヤーの「名前(name)」、「HP(hp)」、「MP(mp)」の情報を作成し、変更や表示をしてみましたが、もし100人分の情報を作成しようと思ったらどうでしょうか?
『「$Player2[“name”] =〇〇」で名前を入れて…次は「$Player2[“hp”] = 〇〇」でHPをセットして…あれ?今何人分作ったっけ?間違えて70人目の情報を別の人のところに上書きしてしまった!』…なんてことが起こるかもしれませんね。このような面倒で記述ミスを少なくするような考えを「オブジェクト指向」という考え方なのです。
PHPもこの考えのプログラミング言語であり、「クラス(class)」はその考え方を実現する為に実装された機能なのです。
クラス(class)とは?
「クラス(class)」はPHPに実装されているオブジェクトの設計図作成機能です。先程のゲームプレイヤーの例で考えてみましょう。
ゲームプレイヤーが100人いるとして、この100人に各プレイヤーの「名前(name)」、「HP(hp)」、「MP(mp)」の項目が共通情報として保持されるはずです。
クラスとは、この共通の項目を設計図として登録しておき、プレイヤーの情報を作成する時にこの項目を呼び出す機能です。「3人目のプレイヤー情報を作成する!」と宣言すると、登録したクラス情報から「名前(name)」、「HP(hp)」、「MP(mp)」の項目が自動的に出来上がります。細かなことは次回に記述するとして、今回はクラスとは、共通の情報をオブジェクトで管理する為の設計図であるということを覚えておけばOKです。
まとめ
- 「オブジェクト」とは変数とメソッド(関数)をまとめられたものである
- オブジェクト指向とは、情報をオブジェクトで管理し、変更や処理をしやすく設計することである。
- クラス(class)とは「オブジェクトの設計図」である
