是否可以从闭包创建命名函数?

伯特·彼得斯

在PHP中,您可以像这样命名函数:

function foo()
{
   return "bar";
}

您可以使用如下所示的闭包:

$foo = function() {
    return "bar";
};

闭包很棒而且易于创建,但是不幸的是我需要使用的库确实需要一个命名函数。是否可以从闭包动态创建命名函数?即不是提前在代码中定义所有函数,而是更像register_function($name, callable $closure)

我知道create_function,但是那需要一个PHP字符串作为函数体,然后就eval可以了,这不是我想要的。

革命

我不认为是否有可能通过闭包即时创建命名函数,但是使用__call()类的魔术方法,您可能会发现以下解决方法很有用:

<?php

class Foo
{
    public function __call($name, $args)
    {
        if (isset($this->{$name}))
            return call_user_func_array($this->{$name}, $args);
    }
}

$foo = new Foo();
// Declaring a closure then assign it to $bar property of Foo
$foo->bar = function () { 
    echo "bar"; 
};
// Call Foo method of the same name
$foo->bar();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否可以在Swift中创建通用闭包?

来自分类Dev

闭包/函数是否可以作为结构的成员?

来自分类Dev

是否可以强制嵌套函数定义不是闭包?

来自分类Dev

是否可以在闭包中使用外部定义的函数

来自分类Dev

是否可以强制嵌套函数定义不是闭包?

来自分类Dev

是否可以使用命名变量在 groovy 中在闭包中打印命名组?

来自分类Dev

在闭包内创建的事件上调用闭包函数

来自分类Dev

是否可以仅为单个命名空间创建 Nuget 包?

来自分类Dev

是否可以从PHP的闭包返回引用?

来自分类Dev

如何为C函数创建闭包

来自分类Dev

检查函数依赖是否在闭包中

来自分类Dev

Parallel.ForEach-是否可以访问修改的闭包?

来自分类Dev

是否可以快速使用多个尾随闭包?

来自分类Dev

是否可以在闭包参数中“向下转换”特征对象?

来自分类Dev

是否可以使`ReplaySubject`在被订阅时运行闭包?

来自分类Dev

快速函数和闭包可以符合Hashable吗?

来自分类Dev

您可以异步分派非转义的闭包函数吗?

来自分类Dev

从函数返回闭包

来自分类Dev

从函数返回闭包

来自分类Dev

ES2015导出的类是否创建闭包?

来自分类Dev

如何创建未装箱的函数/闭包数组?

来自分类Dev

在创建新实例的构造函数闭包中更改“ var”

来自分类Dev

无法创建闭包中定义的函数的对象?

来自分类Dev

“ Python闭包”是否适用于函数对象?

来自分类Dev

JavaScript中的全局/嵌套函数是否实现为闭包?

来自分类Dev

构造函数还是闭包?

来自分类Dev

获取闭包的父函数

来自分类Dev

Javascript闭包-父函数

来自分类Dev

可变函数的闭包注释

Related 相关文章

热门标签

归档