在PHP中以编程方式注册/创建命名函数

在PHP中以编程方式注册/创建命名函数,php,function,custom-function,Php,Function,Custom Function,是否可以在全局范围内以编程方式在PHP中注册/创建命名函数 这可以通过create_function(PHP7+之前的版本)实现,现在可以通过匿名/lambda函数实现,但是您可以再次让它们被调用,或者将它们分配给变量或对象属性,然后在最后使用()调用它们 我感兴趣的是,是否可以在一个范围内添加一个新的命名函数,而不必指定给变量并使用$functionName进行访问 我正在寻找的一些解决方案是: create_named_function('fullname', function($first

是否可以在全局范围内以编程方式在PHP中注册/创建命名函数

这可以通过
create_function
(PHP7+之前的版本)实现,现在可以通过匿名/lambda函数实现,但是您可以再次让它们被调用,或者将它们分配给变量或对象属性,然后在最后使用
()
调用它们

我感兴趣的是,是否可以在一个范围内添加一个新的命名函数,而不必指定给变量并使用
$functionName
进行访问

我正在寻找的一些解决方案是:

create_named_function('fullname', function($firstname, $lastname) {
    return $firstname . ' ' . $lastname;
});

然后我可以访问它,比如
fullname(params…

不确定是否应该鼓励它这样做-它停止了所有能够在IDE中检查代码和代码完成情况的有用功能

但是

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$body = <<< 'FN'
<?php
function fullname($firstname, $lastname) {
    return $firstname . ' ' . $lastname;
}
FN;

file_put_contents("func.php", $body);
require "func.php";

echo fullname("Joe", "Bloggs");

这里有
eval
示例:

<?php

$functionName = 'foo';
$f = '
  function ' . $functionName . '($a) {
    var_dump($a);
  }
';
// Finger crossed!)))
eval($f);
// Now you have function "foo" in your global scope!)
$functionName('bar');
// It will print
// string(3) "bar"

这样做的目的是什么?一个有趣的问题,但对于现实生活中的使用,我想不出没有eval()的方法。据我所知,唯一的方法就是编写PHP扩展。这个问题很好,但你能解释一下为什么需要这个吗?)