PHP 匿名クラス
PHP 7 では次を使用してnew class匿名クラスをインスタンス化できます。これを使うことで、「使い捨て」の完全なクラス定義の一部を置き換えることができます。
例
例
<?php
interface Logger {
public function log(string $msg);
}
class Application {
private $logger;
public function getLogger(): Logger {
return $this->logger;
}
public function setLogger(Logger $logger) {
$this->logger = $logger;
}
}
$app = new Application;
// new class を使用して匿名クラスを作成
$app->setLogger(new class implements Logger {
public function log(string $msg) {
print($msg);
}
});
$app->getLogger()->log(「私の最初のログ」);
?>
interface Logger {
public function log(string $msg);
}
class Application {
private $logger;
public function getLogger(): Logger {
return $this->logger;
}
public function setLogger(Logger $logger) {
$this->logger = $logger;
}
}
$app = new Application;
// new class を使用して匿名クラスを作成
$app->setLogger(new class implements Logger {
public function log(string $msg) {
print($msg);
}
});
$app->getLogger()->log(「私の最初のログ」);
?>
上記のプログラムの実行結果は次のとおりです。
私の最初のログ
その他の拡張機能