【 PHP 】PHP8に入門してみた 202日目 PHPの基本 ( オブジェクト指向 委譲)

PHP8技術者認定初級試験 が始まるようなので 試験に向けて (できるだけ)勉強しようと思います! 使用する書籍は独習PHP 第4版(山田 祥寛)|翔泳社の本 (shoeisha.co.jp) となります。

オブジェクト指向

委譲

委譲(Delegation)とは、オブジェクトが他のオブジェクトに特定のタスクや責任を「委ねる」ことを指します。
委譲は、オブジェクト指向プログラミングにおいてオブジェクト間の協調や責任の分散を実現するための重要な仕組みの一つです。

例えば、あるオブジェクトが特定の処理を行うために、別のオブジェクトに対して処理を委譲することがあります。
これにより、オブジェクト同士が密接に連携しながら、より柔軟な設計が可能となります。

メリット

  1. 柔軟性
    オブジェクト同士が直接的に依存しなくて済むため、プログラムの変更や修正が容易になります。
    (例えば、委譲先のオブジェクトを別のものに変更することができます。)
  2. 再利用性
    オブジェクトが他のオブジェクトに特定の処理を任せることで複数のオブジェクトで同じ処理を共有することができます。
    これにより、コードの再利用性が高まります。
  3. デバッグの容易さ
    処理の責任が特定のオブジェクトに集約されるため、バグの発生原因を特定しやすくなります。
  4. オブジェクト同士が直接的に関係しないため、オブジェクトのカプセル化が促進されます。
    (これにより、オブジェクトの状態を保護し、安全性を高めることができます。)

PHPでこの処理を実現すると以下のようなコードになります。

<!DOCTYPE html>

<html>

<?php

class Delegate
{
    private $delegatee;

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

    public function delegate()
    {
        return $this->delegatee->delegateMethod();
    }
}

class Delegatee
{
    public function delegateMethod()
    {
        return "Delegatee's method was called";
    }
}

$delegatee = new Delegatee();
$delegate = new Delegate($delegatee);
?>

<head>
    <meta charset="UTF-8" />
    <title>こんにちは!</title>
    <!-- Bootstrapを有効化 -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" />
</head>

<body>
    <?php
    // "Delegatee's method was called" と出力される
    print $delegate->delegate();
    ?>
</body>

</html>

結果です。

メモ

丸投げ最高!

PHPPHP

Posted by raika@blog