🐘

PHPの無名クラスはどういう時に使うのか

2025/02/19に公開

PHPの無名クラスは、一時的に使用するクラスや、コードの簡潔さと可読性を向上させたい場合に使用されます。以下に具体的な使用例を示します。

1. テスト用のモックオブジェクト作成:

function testSomeFunction($logger) {
    $logger->log("Test message");
}

testSomeFunction(new class {
    public function log($message) {
        echo "Logged: " . $message;
    }
});

この例では、テスト用のロガーオブジェクトを無名クラスで即座に作成しています。

2. 一時的なインターフェース実装:

interface Greeting {
    public function sayHello();
}

$greeter = new class implements Greeting {
    public function sayHello() {
        return "Hello from anonymous class!";
    }
};

echo $greeter->sayHello();

ここでは、Greetingインターフェースを実装する一時的なクラスを作成しています。

3. コールバック関数の代替:

$sorter = new class {
    public function sort($a, $b) {
        return strlen($a) - strlen($b);
    }
};

$words = ["apple", "banana", "cherry"];
usort($words, [$sorter, 'sort']);

この例では、配列のソートに使用するカスタムソート関数を無名クラスのメソッドとして実装しています。

4. 設定オブジェクトの作成:

$config = new class {
    public $debug = true;
    public $environment = 'development';
    public $database = [
        'host' => 'localhost',
        'user' => 'root',
        'pass' => 'secret'
    ];
};

アプリケーションの設定を保持する一時的なオブジェクトを作成する場合に便利です。

これらの例から分かるように、無名クラスは一度しか使用しないクラスや、コードの文脈内で即座にオブジェクトを作成する必要がある場合に特に有用です。ただし、再利用性が低いため、頻繁に使用するクラスには適していません。

Discussion