gpt4 book ai didi

PHP call_user_func 命名空间别名

转载 作者:行者123 更新时间:2023-12-04 16:57:33 24 4
gpt4 key购买 nike

我想知道是否可以从命名空间文件中调用函数。

目前,下面的代码会产生错误。我知道可以只传递整个命名空间,但是有没有更自动化的方法只使用 U 的别名?
use Helpers\User as U;
$t = call_user_func('U\something', 'test');
var_dump($t);

更新

我解决这个问题的方法是在该名称间隔文件中创建一个函数,该函数将返回文件名间隔。

/**
*
* pntfn = Prepend namespace to function name
*
* @param $fn
*
* @return string
*/
function _pntfn($fn) {
return __NAMESPACE__.'\\'.$fn;
}

然后让我在文件中执行以下操作
use Helpers\Users as U;

如果我想从我的用户命名空间文件中组合(函数式编程)一个函数,我会执行以下操作;
$get_username_upper = F\compose('strtoupper', U\_pntfn( 'get_username' ));

不是我最喜欢的实现,但现在有效。缺点是您必须将其添加到所有命名空间函数文件中。

最佳答案

问题是U在编译时解析,所以调用:

U\something

字面意思变成:
Helpers\User\something

这可能仍然无效,因为我知道我们还有指令 use function ,所以您可能也想检查一下。

无论如何,字符串 'U\something'是一个运行时常量,意思是 U在这一点上,实际上根本没有指代任何东西。所以不,不幸的是这是不可能的。

关于PHP call_user_func 命名空间别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36087958/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com