【PHP】初心者向けにオブジェクト指向をやさしく解説!

クラス??オブジェクト指向??PHPを勉強し始めると聞くことも増えてくると思うこの言葉

オブジェクト指向といえば、難しいイメージを持たれている方も多いと思いますが、

基本的にはClassを使ってプログラミングを設計・実装することと考えてもらって大丈夫です

しかし、プログラミングの学習をはじめて間もない方にとって、Classの考え方は少しわかりにくいかもしれません。ですが、Classを使うことに慣れると、とても柔軟なプログラムを書くことができますし、プログラムの設計力も上がります。

なので今回はクラスについてわかりやすく解説していきますので宜しくお願い致します

PHPってなんだ??聞いたことないぞ??という方はこちらからまずは学んでいきましょう!

あわせて読みたい
【初心者向け】PHPの基礎を理解しよう 使い方さえ分かれば、コードの知識なしでもWebサイトが作れるWordPress ですが、HTMLやCSS、PHPといったプログラミングの知識を持つことで、よりオリジナルで自由なWeb...
目次

オブジェクト指向で最初に覚えるべきキーワード

  1. クラス
  2. メソッド
  3. プロパティ
  4. インスタンス

オブジェクト指向には、色々なキーワードが出てきますが、PHPでオブジェクト指向を理解するにあたり

最初は、この4つで十分です!

では順を追って説明していきますね

オブジェクトとは

クラスを理解するにはオブジェクトの知識が不可欠です。まずはオブジェクトとは何かを理解しておきましょう

PHPにおけるオブジェクトとは、「独自の変数や関数をひとまとめにしたもの」のことです

例えばAmazonのようなショッピングサイトで販売されている「パソコン」という商品も、1つのオブジェクトと考えることができます

クラスとは

クラスとは一言でいえば、モノ(オブジェクト)の設計図です

Amazonのようなショッピングサイトで売られている「商品」を例にして考えてみましょう

商品には「商品名がついている」「価格が設定されている」「カテゴリー別に分けられている」など、どの商品にも共通する特徴があります。このような「共通する特徴」を設計図にしたのがクラスです

一度クラス(設計図)を作ってしまえば、同じ特徴を持った別個のオブジェクト(モノ)を大量生産できるようになるため、とても便利です

クラスの作り方

クラスの作り方は以下のとおりです

なお、クラス名は慣習的に先頭を大文字にします。覚えておきましょう

  1. class クラス名 {
  2. クラスの特徴
  3. }

実際にクラスを作る

今回は「ロボット」を例に説明していきます

ロボットとはいってもには多くの種類がありますよね

例えば「ネコ型ロボット」や「お掃除型ロボット」、「案内ロボット」などたくさんいます(笑)

それぞれのロボットを1体1体実装するのも良いですが、これはスマートではありません

そこで、共通して最低限必要な持つ機能や特性、例えば機能は「歩く」「しゃがむ」

特性は「名前」「大きさ」「重量」などは、まとめてしまいましょう

これがクラスの考え方です

言葉だけだとわかりづらいので、早速ですが、シンプルなロボットクラスを作ってみます

クラス名ロボット(Robot)
共通して持つ特徴名前、全長、重量、色
共通して持つ機能歩く、しゃがむ、声を出す

かなりシンプルですが、このようにまとめることができます

このとき、「共通して持つ特徴」と例えている部分を、プロパティ、インスタンス変数と呼びます。

「共通して持つ機能」と例えている部分を、メソッドと呼びます

実際にコードに書き出すと

  1. <?php
  2. class Robot
  3. {
  4.     // プロパティ、インスタンス変数
  5.     private $name;
  6.     private $height;
  7.     private $weight;
  8.     private $color;
  9.     //メソッド
  10.     public function walk(){}  // 歩く
  11.     public function squat(){}  // しゃがむ
  12.     public function speak(){}  // 声を出す
  13. }

のように書けます

private と public はオブジェクト指向にとって重要な要素です

意味は後ほど説明します

メソッドとは

クラスの中で定義された「関数」のことをメソッドと呼びます。

上記コードで言うと、ここの部分です

  1.     //メソッド
  2.     public function walk(){}  // 歩く
  3.     public function squat(){}  // しゃがむ
  4.     public function speak(){}  // 声を出す

いわゆる作ったモノ(オブジェクト)に対する命令文です

基本的な動きは、PHPで定義されるその他の関数と同じであると理解して問題ありません

メソッドは関数ですので、その役割は { } の中に何かしらの行動を定義することができます

メソッドが存在することで引数によって計算結果が変わるなど同じクラスから生まれたものでも、異なった結果を生み出せるようになります

また、 public が付いているのは、クラス外からこれらの関数を呼び出せる、というのを示しています

つまり、外側からクラスを扱いたいもの(命令したいもの)に public をつけます

プロパティとは

クラスの中で定義された「変数」のことをプロパティと呼びます

上記コードで言うと、この部分です

  1.     // プロパティ、インスタンス変数
  2.     private $name;
  3.     private $height;
  4.     private $weight;
  5.     private $color;

クラスの中で定義されている場合のみ、プロパティと独自の名前がついています

変数ですので、クラスの中で動的に変更される数値などを扱います

プロパティがあることで、クラス内で様々な変数を管理できます

先ほどのメソッドと違い、プロパティには基本的に private をつけます

これは、クラス内でしか操作できないもの、を指します

つまり、外側からはこれらの変数に触ることはできません

インスタンスとは

設計図にあたるクラスを利用して、実際に「オブジェクト」を作成したものをインスタンスと呼びます

インスタンスを作成することで、具体的にPHPで様々な作業をオブジェクトに任せられるようになります

コンストラクタとは

インスタンスを作成する方法を学ぶ前に、コンストラクタについて理解しておく必要があります

コンストラクタとは、インスタンスが生成されたときに一番最初に呼び出される関数です

コンストラクタによって実行される最初の処理のことを、初期化といいます

コンストラクタの書き方

  1. <?php
  2. class Robot {
  3. // コンストラクタを定義する
  4. public function __construct() {
  5. 初期化の内容
  6. }
  7. }
  8. ?>

PHPでは function __construct(){} で定義します

このとき、必要な引数を定義して、プロパティを初期化したりします

先ほど作ったロボットクラスに追加するならば

  1. // コンストラクタ
  2. function __construct($name, $height, $weight, $color){
  3.     // プロパティを初期化
  4.     $this->name = $name;
  5.     $this->height = $height;
  6.     $this->weight = $weight;
  7.     $this->color = $color;
  8. }

大事なポイントとしてメソッド内で、自身のクラスのメンバ変数を扱う時は $this ポインタをつけてアクセスします

オブジェクト(インスタンス)の作成方法

具体的にオブジェクトを作成する方法を確認していきます

オブジェクトを作成する場合、以下のように新しいオブジェクトを作成します

  1. $cat_Robot = new Robot(“doraemon”, 129.3, 129.3, “blue”);

これで、ロボットクラスのインスタンス$cat_Robotが作成されました

このように、インスタンス生成時にコンストラクタの引数を与えます

コンストラクタを定義しない場合や引数を取らない場合は、以下のようになります

  1. $cat_Robot = new Robot;
  2. $cat_Robot = new Robot();

まとめ

今回は少し難しいイメージがあるオブジェクト指向、クラスについてでした

分かりやすいように最重要の4つのキーワードを重点的にロボットを例にして説明しました

オブジェクト指向によるプログラミングでは、プログラムの保守・管理が行いやすくなります

ひとまとまりの機能をクラスとして定義しておけば、内容に変更が生じた際にもすぐに修正することができ、そのときの間違いも起こりにくくなります

PHPをマスターするためにもオブジェクト指向を理解し、クラスを使いこなしていきましょう^^

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

バーテンダー→1部上場企業→フリーランス。フリーランスで月収100万円をかなえるために全力で駆け抜けています
実体験をもとに日々のWEB制作の記録を発信していきます
まだまだなのでご指導ご鞭撻のほどよろしくお願いいたします

コメント

コメントする

目次