現在の位置: ホーム> 最新記事一覧> PHPポリモーフィズムの詳細な説明と実践例

PHPポリモーフィズムの詳細な説明と実践例

M66 2025-10-16

PHP におけるポリモーフィズムの概念と例

オブジェクト指向プログラミングでは、ポリモーフィズムとは、異なるオブジェクトが同じメッセージに対して異なる応答をする能力を指します。 PHP では、ポリモーフィズムは主にインターフェイスと継承を通じて実現されます。この記事では、実際のコード例を通して、PHP におけるポリモーフィズムの概念を詳しく分析します。

インターフェースの形状を定義する

まず、calculateArea メソッドを含むインターフェイス Shape を作成します。

 interface Shape {
    public function calculateArea();
}

Circle クラスと Square クラスを実装する

次に、Circle と Square という 2 つのクラスを作成します。どちらも Shape インターフェイスを実装します。

 class Circle implements Shape {
    private $radius;

    public function __construct($radius) {
        $this->radius = $radius;
    }

    public function calculateArea() {
        return round(pi() * pow($this->radius, 2), 2);
    }
}

class Square implements Shape {
    private $sideLength;

    public function __construct($sideLength) {
        $this->sideLength = $sideLength;
    }

    public function calculateArea() {
        return pow($this->sideLength, 2);
    }
}

多態性関数 getShapeArea を作成する

次に、関数 getShapeArea を定義します。この関数は、Shape インターフェイスを実装するオブジェクトをパラメーターとして受け取り、その CalculateArea メソッドを呼び出します。

 function getShapeArea(Shape $shape) {
    return $shape->calculateArea();
}

使用例

これで、Circle オブジェクトと Square オブジェクトを作成し、getShapeArea 関数を使用してその面積を計算できるようになりました。

 $circle = new Circle(5);
$square = new Square(4);

echo "円の面積:" . getShapeArea($circle) . ";";
echo "正方形の面積:" . getShapeArea($square) . "。";

この例では、Circle クラスと Square クラスの両方が Shape インターフェイスを実装し、calculateArea メソッドをオーバーライドします。 getShapeArea 関数に異なるオブジェクトを渡すことで、ポリモーフィズムが実現します。つまり、同じ関数が異なるオブジェクトに対して異なるロジックを実行します。

要約する

PHP のポリモーフィズムはインターフェイスと継承を通じて実装されており、異なるオブジェクトが同じメッセージに対して異なる応答を行うことができます。このメカニズムにより、コードの柔軟性とスケーラビリティが向上します。ポリモーフィズムを合理的に使用すると、コード構造が簡素化され、コードの再利用性が向上し、オブジェクト指向プログラムの保守性が向上します。