PHP クラスの仕組みと使い方のサンプル

PHPのクラスの仕組みと使い方のサンプルです。

確認環境
・PHP 7.1.8

目次

クラスとは

[修飾子] class クラス名 {
    フィールド
    メソッド
}
  • クラスは、フィールド(データ)とメソッド(処理)を定義できます。
  • フィールドは、メンバ変数、プロパティ、属性とも呼びます。
  • メソッドは関数とも呼びます。
  • クラスからオブジェクト(インスタンス)を任意の数分、生成できます。
    その場合、オブジェクトごとにデータを保持できます。
    クラスは定義、設計図、型枠のイメージで、オブジェクトは実体です。
  • クラスのフィールドまたはメソッドにstaticを付けると、オブジェクトを生成しないでそのフィールドまたはメソッドを使用できます。
  • クラス名は最初の文字を大文字にします。Pascal記法といいます。
  • 以下は、PHPマニュアルのクラスのリンクです。
    https://www.php.net/manual/ja/language.oop5.basic.php

クラスのサンプル

2~12行目がColorというクラスです。

<?php
class Color
{
	private $name; //変数

	public function setName($name){ //メソッド
		$this->name = $name;
	}
	public function getName(){ //メソッド
		return $this->name;
	}
}
?>

4行目は、クラスのメンバ変数(プロパティ)です。
privateは、クラスの外部からアクセスできません。
6,9行目は、クラスのメソッド(関数)です。
publicは、クラスの外部からアクセスできます。
7,10行目の$this->は、自クラスの変数や関数を指定します。
7行目は、引数($name)の値を、自クラスのメンバ変数($this->name)にセットします。
10行目は、自クラスのメンバ変数($this->name)の値をメソッドの呼び出し元に返します。
ファイル名は、Color.phpです。

クラスからオブジェクト(インスタンス)を生成する

class クラス名{   //クラスを定義
}
変数 = new クラス名();    //クラスからインスタンスを生成

クラスからオブジェクト(インスタンス)を生成するイメージです。
オブジェクトごとにデータを管理できます。
例えると、クラスは定義、設計図、型枠でインスタンスは実体です。
new演算子を使用してオブジェクト(インスタンス)を生成します。インスタンス化するといいます。

クラスからオブジェクト(インスタンス)を生成するサンプル

上記「クラスのサンプル」のColorクラスからオブジェクトを生成します。

<?php
	require "Color.php";

	//インスタンスを生成
	$cr1 = new Color();
	$cr2 = new Color();
	$cr3 = new Color();

	//インスタンスのメソッドを使用
	$cr1->setName("赤");
	$cr2->setName("黄");
	$cr3->setName("青");

	print $cr1->getName(); //赤
	print $cr2->getName(); //黄
	print $cr3->getName(); //青

?>

2行目は、上記のColor.phpファイルを読み込んでいます。
5~7行目は、Colorクラスのインスタンスを3つ生成しています。
構文は、変数 = new クラス名です。

10~12行目は、インスタンスに値をセットしています。
ポイントは、インスタンスごとに保持するデータが異なる点です
14~16行目は、インスタンスから値を取得して表示しています。
構文は、変数 -> メソッド名です。

クラスからオブジェクト(インスタンス)を生成しないサンプル

クラスからオブジェクトを生成しないサンプルです。staticを追加します。

<?php
class Color
{
	public static $name = "123"; //変数

	public static function getName(){ //メソッド
		return "赤";
	}
}

	print Color::$name; // 123

	print Color::getName(); // 赤
?>

2~9行目は、Colorというクラスです。
4行目は、変数の前にstaticがついています。
static変数やクラスフィールドや静的フィールドとも呼ばれます。
6行目は、メソッドの前にstaticがついています。
staticメソッドやクラスメソッドや静的メソッドとも呼ばれます。
11行目は、newでオブジェクトを生成していませんがColorクラスの変数を参照できます。
構文はクラス名::変数名です。コロンが2つです。
13行目もnewでオブジェクトを生成していませんがColorクラスのメソッドを実行できます。
構文はクラス名.メソッド名です。こちらもコロンが2つです。
11,13行目とも参照先にstaticが付いていない場合は、エラーになります。

関連の記事

クラスはクラスを継承して使用できます。
PHP クラスの継承のサンプル
PHP コンストラクタのサンプル
PHP オーバーライドのサンプル
PHP 抽象クラスと抽象メソッドのサンプル(abstract)
PHP インターフェースのサンプル(interface)

△上に戻る