プログラミング PHP

【PHP入門】クラス(class)の使い方

本記事では、PHPのクラスについて紹介します。

クラスとは

クラスとは、メソッド(関数)やプロパティ(変数)をまとめた関数と変数を持ったプログラムの固まりです。

以下がクラスの記述例になります。クラスには、プロパティ(変数)とメソッド(関数)を記述することができます。

class (クラス名){
 public (プロパティ・変数名 例)$name)= ”(値)” ;
 public(メソッド・関数名 例)function act(){
  ・・・
 }
}

オブジェクトの生成(インスタンスの生成)

クラスを使用するには「new」キーワードを使用します。
new クラス名」でクラスのオブジェクトを生成(インスタンスの生成ともいいます)することでクラスを使用することができます。

以下の例は、「Dog」クラスが宣言されていたとして、「Dog」クラスのオブジェクトを生成する方法です。

$dog = new Dog();

Dogクラスにあるメソッドやプロパティは、クラスのオブジェクトの後に「->」をつけることで参照することができます。

[クラス内のプロパティを参照する方法(例)]
$dog->name

[クラス内のメソッドを呼び出しする方法(例)]
$dog->act()

「->」はアロー演算子、「::」はスコープ定義演算子といいます。

クラスの使用例

それでは、実際にPHPのプログラムでクラスの使い方を紹介します。

次の例では、Dogクラスのオブジェクトを生成し、Dogクラスのプロパティ「$name」を参照、そして Dogクラスのメソッド「act()」を実行しています。

[クラスの使用例]

<?php
 // Dogの情報を管理するクラス
 class Dog {
  // プロパティの宣言
  public $name = "ポチ";
  // メソッドの宣言
  public function act() {
   return "わん"
  }
 }
 // インスタンス生成
 $dog = new Dog();
 // プロパティの呼び出し
 print "Dogの名前:".$dog->name."<br>"
 // メソッドの呼び出し
 print "Dogの鳴き声:".$dog->act();
?>

[実行結果]
Dogの名前:ポチ
Dogの鳴き声:わん

アクセス権

メソッドやプロパティには、次のアクセス権を指定することができます。

アクセス権説明
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 "デストラクタが動く"."<br>";
  }
  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:名前

クラス内のメソッドやプロパティを使うときは「$this->id」のように「$this」を使います。

本記事では、PHPのクラスについて紹介しました。PHPを学習されている方のお力になれれば幸いです。

学習書の紹介

プログラミングは全く初めての人、他の入門書で挫折しちゃった人、つまづく所はみんな同じです。そこを徹底分析したメソッドで、全員ゴールに辿り着ける入門教室が秋葉原にあります。1日でWeb画面と簡単なDBまで作れるようになるとってもユニークな速習コース。その方法を1冊に凝縮した本書なら、いきなりの初心者でも、無理せず楽しくPHPとMySQLのエッセンスを習得できます。

PHPの入門書を卒業した方や、多少プログラミング経験のある方なら、
本書を通じて本格的なシステム開発の世界に入って行けます。
ショッピングサイトの構築を楽しく進める中で、
システム開発に必要な力が自然に身に付くように、
練りに練ったストーリーを組んであるからです。

-プログラミング, PHP