在 JavaScript 中,您可以定义立即执行的匿名函数:
(function () { /* do something */ })()
你能在 PHP 中做类似的事情吗?
在 JavaScript 中,您可以定义立即执行的匿名函数:
(function () { /* do something */ })()
你能在 PHP 中做类似的事情吗?
对于 PHP 7 之前的版本,我能想到的立即执行它们的唯一方法是
call_user_func(function() { echo 'executed'; });
使用当前版本的 PHP,您可以这样做
(function() { echo 'executed'; })();
在PHP 7
javascript 中做同样的事情
$gen = (function() {
yield 1;
yield 2;
return 3;
})();
foreach ($gen as $val) {
echo $val, PHP_EOL;
}
echo $gen->getReturn(), PHP_EOL;
输出是:
1
2
3
当然你可以使用call_user_func
,但还有另一个非常简单的选择:
<?php
// we simply need to write a simple function called run:
function run($f){
$f();
}
// and then we can use it like this:
run(function(){
echo "do something";
});
?>
这是最简单的 PHP 7.0 或更高版本。
(function() {echo 'Hi';})();
这意味着创建闭包,然后通过“()”将其作为函数调用。由于统一的变量评估顺序,就像 JS 一样工作。
(new ReflectionFunction(function() {
// body function
}))->invoke();