【发布时间】:2021-12-01 19:44:22
【问题描述】:
我不确定这在 PHP 中是否可行……
我基本上想要
// A.php
class A {
public static function foo(int a, string b) {
//…//
}
}
被赋予另一个类中的另一个函数。 但是其他类不应该知道类 A 并且不应该需要包含它,而是只指定这样的东西......
// B.php
class B {
public static function doSomething(callable $fn) {
$fn(1,'test'); //<-error
}
}
目前我在调用它时收到错误“A 类”未找到...
include_once('A.php');
include_once('B.php');
B::doSomething('A::foo');
【问题讨论】:
-
Tested your code 它似乎有效?
-
@KIKOSoftware 那是因为你把它放在一个文件中,那里——当然——B知道A,反之亦然。
-
好的,那你做了什么没用?
-
尝试使用call_user_func 在
doSomething()方法中执行可调用。像这样:call_user_func($fn, 1, 'test');。这将适用于任何可调用对象,而不仅仅是您发布的字符串。 -
我努力在我自己的服务器上运行测试中的代码,在三个单独的文件中,如您所述,它仍然可以正常工作。我认为您的问题出在其他地方。