クラス??オブジェクト指向??PHPを勉強し始めると聞くことも増えてくると思うこの言葉
オブジェクト指向といえば、難しいイメージを持たれている方も多いと思いますが、
基本的にはClassを使ってプログラミングを設計・実装することと考えてもらって大丈夫です
しかし、プログラミングの学習をはじめて間もない方にとって、Classの考え方は少しわかりにくいかもしれません。ですが、Classを使うことに慣れると、とても柔軟なプログラムを書くことができますし、プログラムの設計力も上がります。
なので今回はクラスについてわかりやすく解説していきますので宜しくお願い致します
PHPってなんだ??聞いたことないぞ??という方はこちらからまずは学んでいきましょう!

オブジェクト指向で最初に覚えるべきキーワード
- クラス
- メソッド
- プロパティ
- インスタンス
オブジェクト指向には、色々なキーワードが出てきますが、PHPでオブジェクト指向を理解するにあたり
最初は、この4つで十分です!
では順を追って説明していきますね
オブジェクトとは
クラスを理解するにはオブジェクトの知識が不可欠です。まずはオブジェクトとは何かを理解しておきましょう
PHPにおけるオブジェクトとは、「独自の変数や関数をひとまとめにしたもの」のことです
例えばAmazonのようなショッピングサイトで販売されている「パソコン」という商品も、1つのオブジェクトと考えることができます
クラスとは
クラスとは一言でいえば、モノ(オブジェクト)の設計図です
Amazonのようなショッピングサイトで売られている「商品」を例にして考えてみましょう
商品には「商品名がついている」「価格が設定されている」「カテゴリー別に分けられている」など、どの商品にも共通する特徴があります。このような「共通する特徴」を設計図にしたのがクラスです
一度クラス(設計図)を作ってしまえば、同じ特徴を持った別個のオブジェクト(モノ)を大量生産できるようになるため、とても便利です
クラスの作り方
クラスの作り方は以下のとおりです
なお、クラス名は慣習的に先頭を大文字にします。覚えておきましょう
- class クラス名 {
- クラスの特徴
- }
実際にクラスを作る
今回は「ロボット」を例に説明していきます
ロボットとはいってもには多くの種類がありますよね
例えば「ネコ型ロボット」や「お掃除型ロボット」、「案内ロボット」などたくさんいます(笑)
それぞれのロボットを1体1体実装するのも良いですが、これはスマートではありません
そこで、共通して最低限必要な持つ機能や特性、例えば機能は「歩く」「しゃがむ」
特性は「名前」「大きさ」「重量」などは、まとめてしまいましょう
これがクラスの考え方です
言葉だけだとわかりづらいので、早速ですが、シンプルなロボットクラスを作ってみます
| クラス名 | ロボット(Robot) |
| 共通して持つ特徴 | 名前、全長、重量、色 |
| 共通して持つ機能 | 歩く、しゃがむ、声を出す |
かなりシンプルですが、このようにまとめることができます
このとき、「共通して持つ特徴」と例えている部分を、プロパティ、インスタンス変数と呼びます。
「共通して持つ機能」と例えている部分を、メソッドと呼びます
実際にコードに書き出すと
- <?php
- class Robot
- {
- // プロパティ、インスタンス変数
- private $name;
- private $height;
- private $weight;
- private $color;
- //メソッド
- public function walk(){} // 歩く
- public function squat(){} // しゃがむ
- public function speak(){} // 声を出す
- }
のように書けます
private と public はオブジェクト指向にとって重要な要素です
意味は後ほど説明します
メソッドとは
クラスの中で定義された「関数」のことをメソッドと呼びます。
上記コードで言うと、ここの部分です
- //メソッド
- public function walk(){} // 歩く
- public function squat(){} // しゃがむ
- public function speak(){} // 声を出す
いわゆる作ったモノ(オブジェクト)に対する命令文です
基本的な動きは、PHPで定義されるその他の関数と同じであると理解して問題ありません
メソッドは関数ですので、その役割は { } の中に何かしらの行動を定義することができます
メソッドが存在することで引数によって計算結果が変わるなど同じクラスから生まれたものでも、異なった結果を生み出せるようになります
また、 public が付いているのは、クラス外からこれらの関数を呼び出せる、というのを示しています
つまり、外側からクラスを扱いたいもの(命令したいもの)に public をつけます
プロパティとは
クラスの中で定義された「変数」のことをプロパティと呼びます
上記コードで言うと、この部分です
- // プロパティ、インスタンス変数
- private $name;
- private $height;
- private $weight;
- private $color;
クラスの中で定義されている場合のみ、プロパティと独自の名前がついています
変数ですので、クラスの中で動的に変更される数値などを扱います
プロパティがあることで、クラス内で様々な変数を管理できます
先ほどのメソッドと違い、プロパティには基本的に private をつけます
これは、クラス内でしか操作できないもの、を指します
つまり、外側からはこれらの変数に触ることはできません
インスタンスとは
設計図にあたるクラスを利用して、実際に「オブジェクト」を作成したものをインスタンスと呼びます
インスタンスを作成することで、具体的にPHPで様々な作業をオブジェクトに任せられるようになります
コンストラクタとは
インスタンスを作成する方法を学ぶ前に、コンストラクタについて理解しておく必要があります
コンストラクタとは、インスタンスが生成されたときに一番最初に呼び出される関数です
コンストラクタによって実行される最初の処理のことを、初期化といいます
コンストラクタの書き方
- <?php
- class Robot {
- // コンストラクタを定義する
- public function __construct() {
- 初期化の内容
- }
- }
- ?>
PHPでは function __construct(){} で定義します
このとき、必要な引数を定義して、プロパティを初期化したりします
先ほど作ったロボットクラスに追加するならば
- // コンストラクタ
- function __construct($name, $height, $weight, $color){
- // プロパティを初期化
- $this->name = $name;
- $this->height = $height;
- $this->weight = $weight;
- $this->color = $color;
- }
大事なポイントとしてメソッド内で、自身のクラスのメンバ変数を扱う時は $this ポインタをつけてアクセスします
オブジェクト(インスタンス)の作成方法
具体的にオブジェクトを作成する方法を確認していきます
オブジェクトを作成する場合、以下のように新しいオブジェクトを作成します
- $cat_Robot = new Robot(“doraemon”, 129.3, 129.3, “blue”);
これで、ロボットクラスのインスタンス$cat_Robotが作成されました
このように、インスタンス生成時にコンストラクタの引数を与えます
コンストラクタを定義しない場合や引数を取らない場合は、以下のようになります
- $cat_Robot = new Robot;
- $cat_Robot = new Robot();
まとめ
今回は少し難しいイメージがあるオブジェクト指向、クラスについてでした
分かりやすいように最重要の4つのキーワードを重点的にロボットを例にして説明しました
オブジェクト指向によるプログラミングでは、プログラムの保守・管理が行いやすくなります
ひとまとまりの機能をクラスとして定義しておけば、内容に変更が生じた際にもすぐに修正することができ、そのときの間違いも起こりにくくなります
PHPをマスターするためにもオブジェクト指向を理解し、クラスを使いこなしていきましょう^^

コメント