[英]PHP. call static method of class which class name saved in static variable of other class?
例如,我有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);
是的,它不起作用,但是您可能完全理解我想要什么。 :)我将如何写那行使其可行? 感谢您提出任何建议!
您可以使用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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.