【PHP】クラス(class)についてザックリ解説
PHPの「クラス(class)」について詳しく解説します。オブジェクト指向プログラミングの基本から応用まで、具体例を交えて説明します。
- クラスとは?
- PHPでのクラスの定義
- インスタンスの作成と使用
- コンストラクタとデストラクタ
- クラスの継承
- カプセル化とアクセサ
- ポリモーフィズム(多態性)
- 静的メンバと静的メソッド
- 抽象クラスとインターフェース
- トレイト(Trait)
クラスとは?
クラス(class)は、オブジェクト指向プログラミング(OOP)の基本概念であり、「オブジェクトを作るための設計図」のようなものです。
PHPでのクラスの定義
PHPでクラスを定義するには、class
キーワードを使用します。
class Person {
public $name;
public $age;
}
インスタンスの作成と使用
クラスからオブジェクト(インスタンス)を作成するには、new
キーワードを使います。
$person = new Person();
$person->name = "太郎";
$person->age = 25;
echo $person->name;
コンストラクタとデストラクタ
クラスには、オブジェクトが作成されたときに自動的に呼ばれるコンストラクタ(__construct
)があります。
class Person {
public $name;
public function __construct($name) {
$this->name = $name;
}
}
$person = new Person("太郎");
echo $person->name;
クラスの継承
PHPでは、extends
キーワードを使ってクラスを継承できます。
class Animal {
public function makeSound() {
echo "動物の音";
}
}
class Dog extends Animal {
public function makeSound() {
echo "ワンワン";
}
}
$dog = new Dog();
$dog->makeSound(); // ワンワン
カプセル化とアクセサ
クラスのプロパティを保護するために、private
修飾子を使います。
class BankAccount {
private $balance = 0;
public function deposit($amount) {
$this->balance += $amount;
}
public function getBalance() {
return $this->balance;
}
}
$account = new BankAccount();
$account->deposit(1000);
echo $account->getBalance(); // 1000
ポリモーフィズム(多態性)
ポリモーフィズムとは、異なるクラスのオブジェクトが同じインターフェースを共有し、異なる動作をすることです。
interface Animal {
public function makeSound();
}
class Cat implements Animal {
public function makeSound() {
echo "ニャー";
}
}
class Dog implements Animal {
public function makeSound() {
echo "ワンワン";
}
}
$animals = [new Cat(), new Dog()];
foreach ($animals as $animal) {
$animal->makeSound();
}
静的メンバと静的メソッド
静的メンバは、オブジェクトを作成せずに直接アクセスできます。
class Math {
public static function square($n) {
return $n * $n;
}
}
echo Math::square(5); // 25
抽象クラスとインターフェース
抽象クラスは、直接インスタンス化できず、サブクラスで実装する必要があります。
abstract class Shape {
abstract public function getArea();
}
class Circle extends Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function getArea() {
return pi() * $this->radius * $this->radius;
}
}
$circle = new Circle(3);
echo $circle->getArea();
トレイト(Trait)
PHPのトレイトは、クラスのコード再利用を助ける仕組みです。
trait Logger {
public function log($message) {
echo "LOG: " . $message;
}
}
class User {
use Logger;
}
$user = new User();
$user->log("ユーザーがログインしました。");