PHPは、オブジェクト指向プログラミング(OOP)をサポートしている強力なスクリプト言語です。
そんなオブジェクトとクラスは、オブジェクト指向プログラミングの中心的な概念であり、コードの再利用性と保守性を高めるために重要です。
今回はPHPのクラスの基本的な概念と、使用方法についてまとめていきます。
クラスとは
クラスは一言で言うと、オブジェクトを作成するための設計図のようなものです。
クラスにはプロパティ(変数)とメソッド(関数)が含まれています。
プロパティはオブジェクトのデータを保持し、メソッドはそのデータを操作するための機能を提供します。
クラスの定義
PHPでクラスを定義するには“class”キーワードを使用します。
以下にシンプルなクラスの例を示します。
<?php
class Person {
// プロパティの定義
public $name;
public $age;
// コンストラクタの定義
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
// メソッドの定義
public function introduce() {
echo "こんにちは、私は{$this->name}で、{$this->age}歳です。";
}
}
// クラスのインスタンス化
$person1 = new Person("太郎", 25);
$person1->introduce();
?>
上記のコードでは、’Person’というクラスを定義しています。
このクラスには、‘$name’と‘$age’という2つのプロパティがあります。
また、コンストラクタメソッド(’__construct’)と‘introduce’メソッドが定義されています。
‘__construct’メソッドは、オブジェクトが作成されたときに自動的に呼び出され、プロパティに初期値を設定してくれます。
プロパティとメソッドの可視性
PHPでは、プロパティとメソッドに対してアクセス制御を設定することができます。
可視性には、以下の3種類があります。
public
クラスの外部からでもアクセス可能
protected
同じクラスとその子クラスからのみアクセス可能
private
同じクラスからのみアクセス可能
<?php
class Person {
public $name;
protected $age;
private $salary;
public function __construct($name, $age, $salary) {
$this->name = $name;
$this->age = $age;
$this->salary = $salary;
}
public function introduce() {
echo "こんにちは、私は{$this->name}です。";
}
protected function getAge() {
return $this->age;
}
private function getSalary() {
return $this->salary;
}
}
$person1 = new Person("太郎", 25, 500000);
$person1->introduce(); // OK
// echo $person1->age; // エラー
// echo $person1->salary; // エラー
// echo $person1->getAge(); // エラー
// echo $person1->getSalary(); // エラー
?>
上記のコードでは、‘$name’プロパティは‘public’として定義されているので、クラスの外部からでもアクセスできます。
一方で、‘$age’プロパティは‘protected’として定義しているので、クラスの外部からはアクセスできません。
同様に‘$salary’プロパティは‘private’として定義されており、クラスの外部からも、子クラスからもアクセスできないように制御されています。
継承
PHPのクラスは、継承を通じて他のクラスのプロパティやメソッドを引き継ぐことができます。
これにより、コードの再利用性が向上します。
‘extends’キーワードを使用してクラスを継承します。
<?php
class Employee extends Person {
public $position;
public function __construct($name, $age, $salary, $position) {
parent::__construct($name, $age, $salary);
$this->position = $position;
}
public function introduce() {
parent::introduce();
echo " 私は{$this->position}です。";
}
}
$employee1 = new Employee("花子", 30, 600000, "マネージャー");
$employee1->introduce();
?>
上記のコードでは、‘Employee’クラスが‘Person’クラスを継承しています。
これにより、‘Person’クラスのプロパティとメソッドを‘Employee’クラスで使用できるようになります。
また、‘Employee’クラスの‘introduce’メソッドは、親クラスの‘introduce’メソッドを呼び出しています。
静的メソッドとプロパティ
メソッドやプロパティを静的に定義することも出来ます。
静的メソッドやプロパティは、インスタンス化しなくてもアクセスできます。
‘static’キーワードを使用して定義します。
<?php
class MathUtil {
public static $pi = 3.14;
public static function add($a, $b) {
return $a + $b;
}
}
echo MathUtil::$pi; // 3.14
echo MathUtil::add(2, 3); // 5
?>
上記のコードでは、‘MathUtil’クラスのプロパティ‘$pi’とメソッド‘add’が静的に定義されています。
これにより、クラス名を通じて直接アクセスすることができるようになります。
まとめ
PHPのクラスは、オブジェクト指向プログラミングの強力なツールです。
クラスを使いこなすことで、コードの再利用性、保守性、可読性が向上します。
今回は基本的な使い方をコード例を交えながら説明してみました。
基礎がしっかりしていないと、質の悪いコードや効率の悪い処理に繋がってしまうので、更なる理解を行っていきたいです。
コードの再利用性、保守性、可読性を向上させるためにおすすめな本の紹介はこちら。