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