.PHP.调用类的静态方法,该类名保存在其他类的静态变量中


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);

但我想集中初始化我的 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