目次
はじめに
前回の記事では、変数のスコープ(ローカル変数、グローバル変数、静的変数)について紹介しました。
本記事では、PHPのクラスについて紹介します。
クラスとは
クラスとは、メソッド(関数)やプロパティ(変数)をまとめたもの(関数と変数を持ったプログラムの固まり)です。
次の例では、Cat(猫)の情報を管理するクラスを作成しています。クラスには、メソッドとプロパティを記述することができます。
オブジェクトの生成(インスタンスの生成)
クラスを使用するには「new」キーワードを使用します。「new クラス名」でクラスのオブジェクトを生成(インスタンスの生成ともいいます)することでクラスを使用することができます。
スポンサーリンク
例えば「Cat」クラスを使うには、次のように「Cat」クラスのオブジェクトを生成します。
$cat = new Cat();
そして、Catクラスにあるメソッドやプロパティは、クラスのオブジェクトの後に「->」をつけることで参照することができます。(※静的プロパティと静的メソッドにアクセスするときは「::」を使用)
[クラス内のプロパティを参照する例]
$cat->name
[クラス内のメソッドを呼び出す例]
$cat->cry()

クラスの使用例
それでは、実際にPHPのプログラムでクラスの使い方を紹介します。
次の例では、Catクラスのオブジェクトを生成し、Catクラスのプロパティ「$name」を参照、そして Catクラスのメソッド「cry()」を実行しています。
[クラスの使用例]
<?php // 猫の情報を管理するクラス class Cat { // プロパティの宣言 public $name = "ミー"; // メソッドの宣言 public function cry() { return "ニャー"; } } // インスタンス生成 $cat = new Cat(); // プロパティの呼び出し print "猫の名前:".$cat->name."<br />"; // メソッドの呼び出し print "猫の鳴き声:".$cat->cry(); ?>
[実行結果]
猫の名前:ミー 猫の鳴き声:ニャー
アクセス権
メソッドやプロパティには、次のアクセス権を指定することができます。
アクセス権 | 説明 |
public | どこからでもアクセス可能 |
protected | クラス内とサブクラスからのみアクセス可能 |
private | クラス内からのみアクセス可能 |
例えば、次のクラス「Sample」内にあるプロパティ「$name」は「public」で定義しているため、外部から参照することができます。
<?php class Sample { public $name = "名前"; } $obj = new Sample(); print $obj->name; // publicで定義しているため、参照できる ?>
しかし、次の例ではプロパティ「$name」は「private」で定義しているため、外部から参照することはできません。
<?php class Sample { private $name = "名前"; } $obj = new Sample(); print $obj->name; // privateで定義しているため、参照できない(エラーになる) ?>
コンストラクタとデストラクタ
クラスを使用するには「new」キーワードを使用して、クラスのオブジェクトを生成(インスタンスを生成)します。
スポンサーリンク
このクラスを「new」したタイミングで動き出す特別なメソッドのことをコンストラクタといい、「__construct」メソッドを使用します。
そして、オブジェクトを作るタイミングで動き出すコンストラクタとは逆で、オブジェクトが消滅するときに動き出す特殊なメソッドのことをデストラクタといい、「__destruct()」メソッドを使用します。

コンストラクタとデストラクタの使用例
それでは、実際にPHPのプログラムでコンストラクタとデストラクタの使い方を紹介します。
[コンストラクタとデストラクタの例]
<?php class ConstructSample { // コンストラクタ public function __construct() { print "コンストラクタが動く<br />"; } // デストラクタ public function __destruct() { print "デストラクタが動く"; } public function test() { print "testメソッドが動く<br />"; } } // インスタンス生成 $obj = new ConstructSample(); $obj->test(); ?>
[実行結果]
コンストラクタが動く testメソッドが動く デストラクタが動く
上記例では、オブジェクトが生成されたタイミングでコンストラクタが動き、メソッド「test()」を実行、その後 オブジェクトが参照されなくなった(消滅するとき)タイミングでデストラクタが動作しています。
引数ありのコンストラクタ
コンストラクタには引数をつけることもできます。
[引数ありのコンストラクタの例]
<?php class ConstructSample { public $id; public $name; // コンストラクタ public function __construct($id, $name) { $this->id = $id; $this->name = $name; } public function output() { print $this->id.":".$this->name; } } // インスタンス生成 $obj = new ConstructSample("1", "名前"); $obj->output(); ?>
[実行結果]
1:名前

終わりに
本記事では、PHPのクラスについて紹介しました。
次回の記事では、継承とオーバーライドについて紹介します。
次回の記事