ホームページ  >  記事  >  バックエンド開発  >  PHP Closureクラスの使い方と導入方法

PHP Closureクラスの使い方と導入方法

墨辰丷
墨辰丷オリジナル
2018-06-07 09:30:021618ブラウズ

この記事では主に PHP Closure クラスの使い方を紹介します。興味のある方はぜひ参考にしてください。

クロージャ、匿名関数とも呼ばれる匿名関数は、php5.3 で導入されました。 匿名関数とは、名前が定義されていない関数です。これを念頭に置いておけば、無名関数の定義を理解できるようになります。

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

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+Mysql+jQuery は現在のオンラインユーザーの数をカウントします

php は数値の 3 桁ごとにカンマを追加する関数関数であるデジタル書式設定を実装します

PHP 中国語縦書き変換プログラム

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。