ホームページ > バックエンド開発 > PHPチュートリアル > PHPでのClosureクラスの使い方について

PHPでのClosureクラスの使い方について

不言
リリース: 2023-04-01 15:06:02
オリジナル
1388 人が閲覧しました

この記事では、PHP での Closure クラスの使用方法を主に紹介します。これには、必要な参照値があります。

Closure クラスとも呼ばれます。匿名関数はphp5.3で導入されました。名前が示すように、匿名関数は名前が定義されていない関数です。この記事では、PHP の Closure クラスの使用法と詳細な説明を紹介します。必要な方は、匿名関数 (別名匿名関数) を参照してください。PHP5.3 で導入されました。

匿名関数は、名前が定義されていない関数です。これを念頭に置いておけば、無名関数の定義を理解できるようになります。

Closure クラス (PHP 5 >= 5.3.0) 匿名関数を表すために使用されるクラスの紹介 (PHP 5.3 で導入) は、このタイプのオブジェクトを生成します。PHP の仕組みを見てみましょう。 Closure クラスを使用して導入します。

PHP Closure クラスは、以前に PHP 定義済みインターフェイスで導入されましたが、インターフェイスではなく、内部の最終クラスです。 Closure クラスは匿名関数を表すために使用され、すべての匿名関数は Closure クラスのインスタンスです。

$func = function() {
  echo 'func called';
};
var_dump($func); //class Closure#1 (0) { }
$reflect =new ReflectionClass('Closure');
var_dump(
  $reflect->isInterface(), //false
  $reflect->isFinal(), //true
  $reflect->isInternal() //true
);
ログイン後にコピー

Closure クラスの構造は次のとおりです:

Closure::__construct — インスタンス化を禁止するために使用されるコンストラクターClosure::bind — クロージャーをコピーし、指定された $this オブジェクトをクラス スコープにバインドします。

Closure::bindTo — 現在のクロージャ オブジェクトをコピーし、指定された $this オブジェクトとクラス スコープをバインドします。


$this オブジェクトとスコープをバインドする例を見てください:

class Lang
{
  private $name = 'php';
}
$closure = function () {
  return $this->name;
};
$bind_closure = Closure::bind($closure, new Lang(), 'Lang');
echo $bind_closure(); //php
ログイン後にコピー

さらに、PHP ではマジック メソッド __invoke() を使用して、クラスは終了となります:

class Invoker {
  public function __invoke() {return __METHOD__;}
}
$obj = new Invoker;
echo $obj(); //Invoker::__invoke
ログイン後にコピー

上記がこの記事の全内容です。その他の関連コンテンツについては、こちらをご覧ください。 PHP 中国語 Web サイトにご注意ください。

関連する推奨事項:

PHP の move_uploaded_file() 関数の分析について


未定義のインデックスの問題を解決する方法PHP によるプロンプト

以上がPHPでのClosureクラスの使い方についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート