gpt4 book ai didi

静态方法上的 PHP call_user_func

转载 作者:可可西里 更新时间:2023-11-01 12:42:56 27 4
gpt4 key购买 nike

我在 Symfony2 上开发,我需要调用一个类的方法,两者都只在运行时已知。

我已经成功使用了variable functionscall_user_func在项目中,但是这次他们给我出了问题...

我的代码是这样的

namespace MyBundleNamespace;

use MyBundle\Some\Class;

class MyClass
{
public static function myFunction() { ... }
}

在其他一些文件中我需要这样做

MyClass::myFunction();

但是动态的,所以我都试过了

$class = "MyClass";
$method = "myFunction";

$class::$method();

$class = "MyClass";
$method = "myFunction";
call_user_func("$class::$method");

但是我收到了一个找不到类 MyClass 的错误。当然,该类已正确包含在 use 中,如果我调用 MyClass::myFunction() 就可以正常工作。

我还尝试按照 this question 中的建议手动触发自动加载器回答评论,但没有用。此外,class_exists 返回了 false

我错过了什么?有什么想法吗?

谢谢!

最佳答案

您缺少命名空间:

$class = '\\MyBundleNamespace\\MyClass';
$method = 'myFunction';

两个调用都应该有效:

call_user_func("$class::$method");
call_user_func(array($class, $method));

关于静态方法上的 PHP call_user_func,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10534360/

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