closure匿名函数
function createGreeter($who) {
return function() use ($who) {
echo "Hello $who";
};
}
$greeter = createGreeter("World");
$greeter(); // Hello World
$f = function () {
return 100;
};
function B(Closure $callback)
{
return $callback();
}
$a = B($f);
print_r($a);//输出100
callFunc.php :
<?php
namespace App;
class Container
{
protected $instance;
protected $closure;
public function __contruct() {
}
public function alarm() {
echo 'container class alarm <br/>';
}
public function bind($func, $closure) {
$this->closure[$func] = $closure;
}
public function done($func, $arg) {
$closure = $this->closure[$func];
$closure($arg);
}
}
classTest.php :
<?php
//定义域
require 'callFunc.php';
use App\Container;
ini_set('display_errors' , 1);
echo 'display class name ' . App\Container::class . '<br/>';
$container = new Container();
$container->alarm();
//闭包
$container->bind('walk', function($arg) {
echo 'to walk, ' . $arg . '<br/>';
});
$container->bind('run', function($arg) {
echo 'to run ' . $arg . '<br/>';
});
$container->bind('jump', function($arg) {
echo 'to jump ' . $arg . '<br/>';
});
$container->done('walk', 'vitoria');
$container->done('run', 'vitoria');
$container->done('jump', 'vitoria');