例如我有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);
但是我想集中初始化我的Dll并像这里一样打电话:
// how to ???
$x = self::$dll_bla::doIt(2);
是的,它不起作用,但你可能会理解我想要的是什么。 :) 我该如何编写该行以使其可行? 谢谢你的任何提议!
答案 0 :(得分:2)
您可以使用call_user_func_array()
(PHP reference link)
小测试示例:
<?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();
答案 1 :(得分:1)
考虑这样做:
<?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