PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHP 7の匿名クラス?


PHP 7の匿名クラスは、新しいクラスを使用して定義できます。完全なクラス定義の代わりに使用することもできます。なぜ匿名クラスを使用するのですか?

  • モックテストは簡単です。
  • インターフェースの動的な実装を簡単に作成できるため、複雑なモックAPIの使用を回避できます。
  • それらは、定義されたスコープに配置できます。

  • 単純な実装のためのオートローダーの使用を回避できます。

以下はコードサンプルです-

<?php
interface a_logger {
   public function log(string $msg);
}
class App {
   private $logger;
   public function getLogger(): a_logger {
      return $this->logger;
   }
   public function setLogger(a_logger $logger) {
      $this->logger = $logger;
   }
}
$app = new App;
$app->setLogger(new class implements a_logger {
   public function log(string $msg) {
      print($msg);
   }
});
$app->getLogger()->log("This has created an anonymous class");
?>

出力

これにより、次の出力が生成されます-

This has created an anonymous class

  1. PHPのget_class_methods()関数

    get_class_methods()関数は、クラスメソッドの名前を取得します。 name_of_classで指定されたクラスに定義されたメソッド名の配列を返します。エラーの場合、NULLを返します。 構文 get_class_methods(class) パラメータ name_of_class −クラス名。必須です! 戻る get_class_methods()関数は、name_of_classで指定されたクラスに対して定義されたメソッド名の配列を返します。エラーの場合、NULLを返します。 例 以下は例です- <?php class Demo {   &n

  2. PHPのclass_exists()関数

    PHPのclass_exists()関数は、クラスが定義されているかどうかをチェックします。クラスが定義済みクラスの場合はTRUEを返し、そうでない場合はFALSEを返します。 構文 class_exists(class, autoload) パラメータ クラス −クラスの名前。 自動読み込み −デフォルトで__autoloadを呼び出すかどうか 戻る class_exists()関数は、クラスが定義されたクラスの場合はTRUEを返し、そうでない場合はFALSEを返します。 例 以下は例です- <?php if (class_exists('Demo'