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');