php Closure類的使用方法

closure,匿名函數,又稱為anonymous functions,是php5.3的時候引入的。匿名函數就是沒有定義名字的函數。這點牢牢記住就能理解匿名函數的定義了。

PHP Closure類之前在PHP匿名函數中介紹過,但它可不是Interface哦,它是一個內部的final類。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類結構如下:

匿名函數 — 用于禁止實例化的匿名函數
匿名函數 — 復制一個閉包,綁定指定的$this對象和類作用域。
匿名函數 — 復制當前閉包對象,綁定指定的$this對象和類作用域。

看一個綁定$this對象和作用域的例子:

立即學習PHP免費學習筆記(深入)”;

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

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享