PHPオブジェクト指向プログラミング(OOP)

PHPで本格的なアプリケーションを構築するには、「オブジェクト指向プログラミング(OOP)」の理解が不可欠です。
クラス、継承、カプセル化、ポリモーフィズム、コンストラクタ・デストラクタ、インターフェースなどのOOPの概念を使うことで、再利用性が高く、保守性に優れたコードが書けるようになります。
本記事では、PHPにおけるオブジェクト指向の基本を、実際のコードを交えながら解説します。


クラスとインスタンスの基本

クラスは「設計図」、インスタンスは「実体」です。PHPでは class を使ってクラスを定義し、new キーワードでインスタンスを生成します。

<?php 
 class User { 
  public $name; public function greet() { 
   return "こんにちは、{$this-&gt;name}さん!"; 
  } 
 } 
 $user1 = new User(); 
 $user1->name = "田中"; 
 echo $user1-&gt;greet(); // こんにちは、田中さん! 
?>
  • $this は「そのインスタンス自身」を指します
  • public は「どこからでもアクセス可能」な可視性

継承・カプセル化・ポリモーフィズム

継承(Inheritance)

親クラスの機能を子クラスに引き継ぐことができます。

<?php 
 class Animal { 
  public function speak() { 
   return "鳴きます"; 
  } 
 } 

 class Dog extends Animal { 
  public function speak() { 
   return "ワンワン!"; 
  } 
 } 
 $dog = new Dog(); 
 echo $dog-&gt;speak(); // ワンワン! 
?>

カプセル化(Encapsulation)

データをクラス内部に隠し、必要な操作のみを外部に公開します。

<?php 
 class BankAccount { 
  private $balance = 0; 
  public function deposit($amount) { 
   if ($amount &gt; 0) { 
    $this-&gt;balance += $amount; 
   } 
  } 
  public function getBalance() { 
   return $this-&gt;balance; 
  } 
 } 
 $account = new BankAccount(); 
 $account-&gt;deposit(5000); 
 echo $account-&gt;getBalance(); // 5000 
?>

privateはクラス内部でのみアクセス可能です。

ポリモーフィズム(Polymorphism)

異なるクラスでも、同じメソッド名で異なる動作を実現できます。

<?php 
 class Bird { 
  public function speak() { 
   return "チュンチュン"; 
  } 
 } 
 class Cat { 
  public function speak() { 
   return "ニャー"; 
  } 
 } 
 function animalSound($animal) { 
  echo $animal-&gt;speak(); 
 } 
 animalSound(new Bird()); // チュンチュン 
 animalSound(new Cat()); // ニャー 
?>

コンストラクタとデストラクタ

コンストラクタ

インスタンス生成時に自動で呼ばれる初期化用メソッドです。

<?php 
 class Product { 
  public $name; 
  public function __construct($name) { 
   $this-&gt;name = $name; 
  } 
  public function show() { 
   return "商品名:{$this-&gt;name}"; 
  } 
 } 
 $p = new Product("ノートPC"); 
 echo $p->show(); 
?>

デストラクタ

インスタンスが破棄されるときに自動実行されます。

<?php 
 class Logger { 
  public function __destruct() { 
   echo "ログを出力しました。"; 
  } 
 } 
 $log = new Logger(); // スクリプト終了時に __destruct が呼ばれる 
?>

インターフェースと抽象クラス

インターフェース

「契約」として、実装すべきメソッドを定義します。

<?php 
 interface AnimalInterface { 
  public function speak(); 
 } 
 class Cat implements AnimalInterface { 
  public function speak() { 
   return "ニャー"; 
  } 
 } 
?>

抽象クラス

abstractなクラスは直接インスタンス化できませんが、共通のロジックを定義できます。

<?php 
 abstract class Shape { 
  abstract public function getArea(); 
 } 
 class Square extends Shape { 
  private $side = 4; 
  public function getArea() { 
   return $this-&gt;side * $this-&gt;side; 
  } 
 } 
?>

まとめ

今回は、PHPのオブジェクト指向プログラミングの基礎を一通り解説しました。

  • クラスとインスタンスの基本
  • 継承、カプセル化、ポリモーフィズム
  • コンストラクタ / デストラクタの役割
  • インターフェースと抽象クラスの違いと使い方

OOPを理解すると、コードの再利用性や保守性が劇的に向上します。

採用情報 長谷川 横バージョン
SHARE
PHP Code Snippets Powered By : XYZScripts.com