繁体   English   中英

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

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM