PHP入門 クラスの仕組みとサンプル

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

確認環境
・PHP 7.1.8

目次

クラスとは

[修飾子] class クラス名 {
    フィールド
    メソッド
}
  • クラスは、フィールド(データ)とメソッド(処理)を定義できます。
  • フィールドは、メンバ変数、プロパティ、属性とも呼びます。
  • メソッドは関数とも呼びます。
  • クラスは設計図や型枠のイメージです。
  • 以下は、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です。

クラスを利用する

クラスを利用する場合、クラスからオブジェクトを生成する場合と生成しない場合があります。

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

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

new演算子を使用してオブジェクト(インスタンス)を生成します。インスタンス化といいます。

上記の図はクラスからオブジェクト(インスタンス)を3つ生成したときのイメージです。
オブジェクトごとにデータを管理できます。
例えると、クラスは設計図、型枠でインスタンスは実体です。

コード

クラスからオブジェクトを生成して利用するサンプルです。
上記「クラスのサンプル」の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行目は、インスタンスから値を取得して表示しています。
構文は、変数 -> メソッド名です。

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

クラスからオブジェクトを生成しないサンプルです。
static修飾子を追加します。new演算子がありませんが使用できます。

<?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)

△上に戻る