【php的闭包匿名函数图解】教程文章相关的互联网学习教程文章

在PHP中执行纯粹的匿名函数【代码】

在PHP中执行匿名函数的建议方法是什么,类似于Javascript如何提供这种可能性? 使用Javascript:(function(){ console.log('Hello!'); })();在PHP中尝试相同的操作会产生参数左括号的语法错误.我通过“误用”call_user_func()找到解决这个问题的方法: PHP:call_user_func(function(){ echo "Hello!"; });但是PHP documentation(更新:文档的德语版本)明确地说call_user_func()的第一个参数应该是一个字符串…所以我不确定我的解决...

php – 数组中的匿名函数【代码】

我已经宣布了$func = array('a' => array('b' => function() {echo "hello";}) );我尝试以这种方式打电话但它不起作用$call = $func['a']['b']; $call();我收到一个错误致命错误:函数名称必须是字符串 我该如何调用匿名函数?我正在使用PHP 5.3. 更新它工作,我只是使用错误的键.解决方法:你做了什么工作.试试这个:<?php $func = array('a' => array('b' => function() {echo "hello";}) ); $call = $func['a']['b']; $call();另见...

php – stdClass和匿名函数【代码】

我可以使用匿名函数执行此操作$func = function() {return "Hello World";};var_dump($func());但是,我不能这样做$namespace->func = function() {return "Hello World";};var_dump($namespace->func());我会得到这个错误Call to undefined method stdClass到目前为止我发现的解决方法是使用另一个变量$temp = $namespace->func; var_dump($temp());有没有办法可以在一行中完成?解决方法:你可以使用__invoke():// declare $names...

匿名函数 – 声明全局变量和在php中使用之间的区别是什么?【代码】

在学习PHP中的匿名函数时,我遇到了这个问题:Anonymous functions can use the variables defined in their enclosingscope using the use syntax.例如:$test = array("hello", "there", "what's up");$useRandom = "random";$result = usort($test, function($a, $b) use ($useRandom){if($useRandom=="random")return rand(0,2) - 1;elsereturn strlen($a) - strlen($b);} );为什么我不能像以下一样将$useRandom全局化?$test2 ...

php – 将一个变量传递给wordpress过滤器中的匿名函数【代码】

我试图覆盖一个在wordpress中创建SEO标题的插件.过滤器完成工作,但我需要动态创建标题.所以我创建标题然后将其传递给匿名函数.我可以有另一个功能,创建标题,这肯定会更清洁…… 这有效function seo_function(){add_filter('wpseo_title', function(){return 'test seo title';});}事实并非如此function seo_function(){//create title above $title="test seo title";add_filter('wpseo_title', function($title){return $title;})...

php – 为什么我不能在非匿名函数中使用’use’?【代码】

我正在尝试从父子元素数组创建一个路径. 我们的想法是编写一个递归函数,该函数使用路径中包含的所有元素按顺序填充数组. 我的问题是在PHP中关闭: 为了使我的递归函数起作用,我必须在全局范围内定义几个变量. 这是它的样子:global $breadcrumbs; $breadcrumbs = array(); function buildBreadcrumbs($elements, $parentID){global $siteroot;global $breadcrumbs;global $navigation;if($siteroot['id'] === $parentID){$nav = ar...

我们可以调用匿名函数而不将其存储在PHP中的变量中吗?【代码】

在Javascript中,在一个语句中调用另一个函数返回的函数很容易.考虑例如:function createOperation(operator) {return Function("a", "b", "return a " + operator + "b;") }var result = createOperation("*")(2, 3);在这里,我们调用一个函数来创建另一个函数,该函数将两个值相乘,然后用两个参数调用这个新函数. 如果我尝试在PHP中复制类似的代码片段,我最终会使用两个语句和一个额外的变量:function createOperation(operator) ...

PHP:关联数组中的匿名函数可以访问数组的其他成员吗?【代码】

在以下示例中,是否可以从匿名函数中访问“str”值?$foo = array('str' => 'THIS IS A STRING','fn' => function () {// is it possible from within here to access 'str'?} );解决方法:如果$foo在全局命名空间中定义,你应该能够通过$GLOBALS [‘foo’] [‘str’]访问它(或通过全局$foo;构造使其可用).如果不是(local var,parameter,member variable,…),则必须将它(作为引用!)传递给匿名函数:$foo = array('str' => 'THIS IS A...

php中回调函数和匿名函数【代码】

php中回调函数和匿名函数回调函数、闭包在JS中并不陌生,JS使用它可以完成事件机制,进行许多复杂的操作。根据作用不同分为回调和匿名。一、回调函数就是将后续的操作交给用户来定义,比如js中的点击事件:$('button').on('click', function(){// ... }) 内核帮你注册了一个点击事件,点击完后要做什么则叫做回调,在php中也是一样的道理。 回调函数的参数也是由主程序定义好的并传递回来的,用户应该遵守。 定义class swoole{publ...

如何作为参数传递PHPDoc匿名函数?【代码】

当它作为参数传递时,我应该如何记录匿名函数?例如:// Call my_function(), passing 2 arguments. my_function( 'foo', function() {// Body of the anon function I'd like to document. } );提前致谢.解决方法:要记录函数接受Closure,我建议callable:/*** Do something.* @param callable $code*/ function foo(callable $code) { }关于评论,PHPDoc使用DocBlocks,PHP引擎Tokenizer只识别正式定义.因此,PHPDoc不会看到这个:/**...

034-PHP简单定义一个匿名函数【代码】【图】

<?php/* 简单定义一个匿名函数 */# 把匿名函数赋值给一个变量,也叫临时函数$demo = function ($txt) {echo $txt;};# 调用测试下$demo(我爱PHP); ?>

PHP闭包和匿名函数

概念闭包和匿名函数在PHP5.3.0中被引入。 闭包闭包是指创建时封装周围环境的函数。即使闭包所在的环境不存在了,闭包中封装的状态依然存在。这个概念很难理解,不过没关系,继续看下去就会明白了。 匿名函数匿名函数就是没有名字的函数。匿名函数可以赋值给变量,还能像其他任何PHP对象那样传递。不过匿名函数仍然是函数,因此可以调用,可以传递参数。匿名函数特别适合作为函数或者方法的回调。注意:理论上来说,闭包和匿名函数是...

PHP引擎是否优化循环中的匿名函数?【代码】

我有一个数组存储对单个anonymous function的多个引用:$fns = array(); //some code $fn = function(){echo 'this is closure 12345... < 67890';// etc etc.. }; for($x=12345; $x<67890; ++$x){$fns[$x] = $fn; }可以看出,我们只创建了一个匿名函数. 如果我们把函数声明放在循环中怎么办? :$fns = array(); //some code for($x=12345; $x<67890; ++$x){$fns[$x] = function(){echo 'this is closure 12345... < 67890';// etc...

PHP匿名函数和闭包【图】

概述 闭包和匿名函数在PHP 5.3.0中引入,这两个特性非常有用,每个PHP开发者都应该掌握。 匿名函数其实就是没有名称的函数,匿名函数可以赋值给变量,还能像其他任何PHP函数对象那样传递。不过匿名函数仍然是函数,因此可以调用,还可以传入参数,适合作为函数或方法的回调。 闭包是指在创建时封装周围状态的函数,即使闭包所在的环境的不存在了,闭包中封装的状态依然存在。 创建匿名函数 创建匿名函数很简单: //将匿名函数赋给一...

SUCTF 2018——Anonymous(php匿名函数 \x00lambda_)【代码】

直接看题源代码 1 <?php2 $MY = create_function("","die(`cat flag.php`);");3 $hash = bin2hex(openssl_random_pseudo_bytes(32));4 eval("function SUCTF_$hash(){"5 ."global \$MY;"6 ."\$MY();"7 ."}");8 if(isset($_GET[func_name])){9 $_GET["func_name"](); 10 die(); 11 } 12 show_source(__FILE__);create_function的匿名函数也是有名字的,名字是\x00...

匿名 - 相关标签