例如,我有 2 个类:"Main
"和"Dll_Main_Bla
"。
Class "Dll_Main_Bla"
只有静态方法!
public static function doIt($argument){return $argument*2;};
在Main
里面我有静态变量 public static $dll_bla = 'Dll_Main_Bla';
在非静态的Class Main
方法中,我想调用:
$x = Dll_Main_Bla::doIt(2);
但我想集中初始化我的 Dlls 并像这里一样调用它们:
// how to ???
$x = self::$dll_bla::doIt(2);
是的,它不起作用,但你可能明白我到底想要什么。 :)我将如何写这一行以使其可行?感谢您的任何提议!
您可以使用
call_user_func_array()
(PHP参考链接)
小型测试示例:
<?php
class Main {
public static $dll_bla = 'Dll_Main_Bla';
public function init() {
$x = call_user_func_array(array(self::$dll_bla, 'doIt'),array(2));
echo $x;
}
}
class Dll_Main_Bla {
public static function doIt($argument) {
return $argument*2;
}
}
$main = new Main;
$main->init();
考虑这样做:
<?php
class Dll_Main_Bla {
public static function toBeCalled($anyParam) {
return 'Elo, ' . $anyParam;
}
}
class Main {
public static $dll_bla = 'Dll_Main_Bla';
public function test() {
$className = Main::$dll_bla;
$x = $className::toBeCalled('Vincent');
return $x;
}
}
$main = new Main;
echo $main->test(); //should do what you expect it to do