【PHP入門】クラスとインスタンスの使い方

  • 2019.12.17
  • 2022.05.04
  • PHP
【PHP入門】クラスとインスタンスの使い方

PHPのクラス、インスタンスがよく理解できない。。。
それぞれの意味と使い方をわかりやすく解説してほしい!

こう言ったPHPの勉強を始めたばかりの方向けに、「PHPのクラス、インスタンス」について解説していきます。

本日学ぶ内容は以下の4つです。

  • クラスとインスタンスとは?
  • クラスとインスタンスの書き方
  • クラスとインスタンスの使い方
  • 継承

最後まで読めば、「PHPのクラス、インスタンス」について理解できるようになります!
では早速やっていきましょう

【PHP入門】クラスとインスタンスとは?

クラス

クラスとは「変数(プロパティ)」と「関数(メソッド)」を、1枚の設計図にしたものをクラスを言います。「変数(プロパティ)」のことを「メンバ変数」、「関数(メソッド)」のことを「メンバメソッド」と呼んだりもします。しかしここでは話を単純にするために変数、関数と呼んでいきます。そんな用語もあったなぐらいで大丈夫です。

簡単にいうと、クラスという設計図の中に変数(プロパティ)を設定し、そのクラスの中で何を行うかを関数(メソッド)で設定します。

インスタンス

一方インスタンスとは、クラスで書いた設計図を元に実体化させることをインスタンスと言います。イメージはお家の設計図を書いた後に、設計図を元にお家を建てていくといったイメージです。
インスタンスは1つのクラスで、複数のインスタンスを作成することができます。設計図があれば、幾つでもお家を建てられますからね。それと同じです。

クラスとインスタンスの書き方

クラスの書き方

クラスの書き方は、下のように書いていきます。

<?php

// クラス
class クラス名 {
      public $変数名;
      public $変数名;

      public function 関数名(){
            実行内容
      }
}

?>
  1. クラスなので始めに「class」でスタートさせます。
  2. 次にクラス名を書きます。このクラス名の先頭は一般的に大文字で書きます。(小文字でも反映はされます)
  3. 次に{ }の中に変数名を書いていきます。ここで出てくる「public」は次の記事で解説します。
  4. 変数名が書けたら、次に関数を定義します。ここでも「public」のあとに「function 関数名( )」を書いていきます。
  5. そして最後に{ }の中に実行したい内容を書いていきます。

関数の実行内容を書く際に、クラスの中の変数(プロパティ)や関数(メソッド)にアクセスするときは、$this というものを使います。書き方は「echo $this->変数名 」などと書いていきますので、こちらも覚えましょう。

これでクラスの書き方は以上です。
次にインスタンスの書き方について見ていきます。

インスタンスの書き方

インスタンスの書き方は下のように書いていきます。

// クラス
class クラス名 {
      public $変数名;
      public $変数名;

      public function 関数名(){
            実行内容
      }
}

// インスタンス
$インスタンス名 = new クラス名();
$インスタンス名->変数名 = 値;
$インスタンス名->関数名();

?>
  1. 始めに「インスタンス名 = new クラス名( );」で必ずスタートします。
  2. 次に「インスタンス名->変数名 = 値;」で、クラスで指定した変数名の値を定義します。ここで注意するのは、ここで書く変数名に「$」は付かないので注意です。また、「->」はアロー演算子と言われるもので「変数へのアクセス・関数の呼び出しを実行する」という意味を持ちます。
  3. 関数を呼び出すためにここでも「$インスタンス名->関数名();」と書いていきます。

これでインスタンスの書き方は以上になります。

クラスとインスタンスの使い方

では実際に使い方について見ていきましょう。
今回は、下のようなクラスとインスタンスを書いてみました。

<?php

// クラス
class Food {
      public $name;
      public $price;

      public function much(){
            echo $this->name . "は" . $this->price . "円です" ;
      }
}

// インスタンス
$apple = new Food();
$apple->name = "りんご";
$apple->price = 100;
$apple->much();

?>

まずクラスの中に商品の名前を表す「$name」と値段を表す「$price」を書きます。その後に「much」という関数を定義し、実行内容に「$nameは$priceです。」と定義しました。
次にインスタンスで、 $nameを「りんご」、$priceを「100円」、そして関数「much」を呼び出すためのインスタンスを作成します。

そうすると下のような出力ができます。

クラスとインスタンス

このようにして使っていきます。

継承

継承の書き方

継承とは、新しいクラスを作成する際に、今あるクラスの変数や関数の内容も使えるようにすることを継承と言います。またそのほかにも、新たに変数や関数を定義することもできます。

では実際に書き方について見ていきましょう。
書き方は下のように書いていきます。

class 新しいクラス名 extends 今あるクラス名{

      public $変数名;
      public $変数名;

      public function 関数名(){
            実行内容
      }
}

クラスの書き方とほぼ同じですが、始めの「class 新しいクラス名 extends 今あるクラス名{ }」だけ違うので、注意しましょう。

では実際に、継承の使い方について見ていきます。

継承の使い方

今回は、先ほどのFoodクラスに、新しく「Food2」と言うクラスを作成し、税込み価格を表示させていきます。どう書いていくかと言うと、下のように書います。

<?php
// クラス
class Food {
      public $name;
      public $price;

      public function much(){
            echo $this->name . "は" . $this->price . "円です " ;
      }
}

//新しいクラス
class Food2 extends Food {
      public function tax(){
            echo "税込" . $this->price * 1.08 . "円です";
      }
}

// インスタンス
$apple = new Food();
$apple2 = new Food2(); //新しく定義
$apple->name = "りんご";
$apple->price = 100;
$apple2->price = 100; //新しく定義
$apple->much();
$apple2 ->tax(); //新しく関数を呼び出す

?>

書き方はクラスとなんら変わりません。
インスタンスを新しく作成するので、「$apple2 = new Food2(); 」を忘れずに書きましょう。

まとめ

今回は、クラスとインスタンスについて解説してきました。
クラスとインスタンスは、他の言語でも使用する考え方なので、覚えましょう!

では本日は以上になります。