支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • PHPのオブジェクト指向、クラスとは

この記事ではプログラミング初心者向けにPHPを使う上で重要なポイントであるオブジェクト指向やクラス、継承について紹介します。クラスやインスタンス、継承などは実際に業務に携わる上で重要になってくる知識です。また、オブジェクト指向の考え方を理解すればPHP言語だけでなく他の言語でも同じように同じ扱えるようになるので、覚えておいて損はないです。是非参考にしてみてください。

オブジェクト指向とは

オブジェクト指向によるプログラミングとは、書籍ごとに表現が仕方がやや違っていたり細かく記述されているので難しく感じてしまう人も多いかもしれませんが、簡単にいうとプログラムを機能ごとにまとめて作成していく手法を指します。
例えば、エアコンの機能で考えると「現在の気温を検知する機能」「リモコンから本体に送信する機能」「温風、冷風を流すための機能」などなど「機能ごと」にプログラムを作成する手法、考え方がオブジェクト指向です。オブジェクト指向での開発をすることによるメリットは保守やデバッグがしやすいという点と情報の共有がしやすいという点があります。

オブジェクト指向で出てくる代表的な用語は、「クラス」「継承」「カプセル化」「ポリモーフィズム」などです。それぞれについて解説していきます。

PHPのクラスとは

クラスとは簡単に説明すると、プログラムの処理をまとめたオブジェクトのことで、プログラムの部品のようなものです。PHP言語だけではなく、あらゆるプログラミング言語でクラスは使用されます。クラスの中では主に、プロパティ(変数や定数)やメソッド(関数)の定義を記述します。クラスを定義するには、classキーワードを指定し、その次にクラス名を指定します。

クラスの書き方は

class クラス名
{
  //プロパティの宣言
  public $変数名 = 値;
 
  //メソッドの宣言
  public function メソッド名(){
    メソッド内処理...
  }
}
のように記述します。

クラス名には予約語と呼ばれている、PHP言語において、すでにPHP側で用意されている言葉以外の名前であれば自由に指定することができます。クラス名の後には波括弧{}のペアを指定して、そのなかにクラスの処理を記述していきます。

次にクラスはただ定義しただけでは使用できないのでオブジェクトを生成します。「new」キーワードを使用することでオブジェクトを生成できます。これをインスタンスの生成といいます。また、インスタンスのプロパティやメソッドにアクセスするにはアロー演算子(->)を使用します。


<?php
$instance = new SimpleClass();
$instance->displayVar(); // a default value constant value
?>

継承(extends)

継承とは、あるクラスのメンバを引き継ぐことでクラスを拡張する方法です。
クラスのプロパティやメンバを、他のクラスで継承することができます。継承のさせ方は以下の通りで、extendsを指定します。


class 子クラス名 extends 親クラス名 {
}

このように子クラスを定義する際にextendsキーワードの後ろに親クラス名を記載することで、親クラスを継承する子クラスを定義できます。
「継承」には大規模な開発において、記述されたプログラムが膨大な量となった時、「コードの再利用」などのために使われる要素です。重複しているコードをまとめ、再利用することで作業の効率化とミスの防止、機能の拡張性を向上させるというメリットがあります。

カプセル化

カプセル化を簡単に説明するとクラス外からの利用を制限し、修正を最低限に抑えるという事です。薬のカプセルのように他のモノと混ざることを防ぎ、外気からも守るように保護するようなイメージからカプセル化と呼ばれています。一定範囲のプログラムをカプセルとして保護し、不適切なプログラムの変更や不正アクセスから守るという目的を担うのが「カプセル化」です。

カプセル化には必要性のないプログラムからの干渉を防いで、管理・効率化につながるメリットがあります。

ポリモーフィズム

日本語にすると多様性、多態性という意味です。この概念を簡単にいうと「そのモノらしい固有の振る舞い」を可能にする概念ということで、使用する側を主体として汎用性の高い部品を作る仕組みです。これはなかなかイメージがしにくいかと思いますが、例えばアクセルを例に考えてみます。「マニュアル車」「オートマチック車」「バイク」がそれぞれあったとして、「進め」という指示を受けるとそれぞれアクセルを入れるまでの手順が違えど、どれも進むために最終的にアクセルを踏んで進みます。この「それぞれアクセルを入れるまでの手順」の部分が「そのモノらしい固有の振る舞い」に当たる部分でポリモーフィズムは、一つの指示だけで「そのモノらしい固有の振る舞い」を実行させる「多様性・多態性」を取り入れたプログラムの考え方になります。

PHPのオブジェクト指向まとめ

以上がPHPのオブシェクト指向についての解説です。オブジェクト指向このオブジェクト指向の概念は漠然とした表現が多く、なかなか完全に理解するのは難しいですが、先に記述したようにPHP言語だけでなく他の言語でも活かせる考え方なので是非、習得を目指してみてください。