从未知名称的类调用方法

时间:2015-01-04 02:35:47

标签: php logic

标题可能令人困惑,但我不确定如何用它来表达。所以我希望能够在从数组中获取类之前初始化一个类并从中调用方法而不需要知道类名。

我想做什么

$modules = array(
    'Forums' => array(
            'class'=>'Forums',
            'classVar'=>'forum'
    )
);

        foreach($modules as $name => $module) if ($module['enabled']) {
            require_once('include/scripts/'.$module['link']);
            $$module['classVar'] = new $module['class'];
            $$module['classVar'] = $module['classVar'];
            global $$module['classVar'];
        }

但是,我知道这是实现这一目标的一种迂回方式,我需要知道是否有更简单的方法,如果这是合乎逻辑的。

我想这样做的原因是因为我正在处理的工作将能够接受模块,我需要能够从模块中获取所有统计数据并在主管理面板中显示它们,但如果我没有创建模块,那么无法知道模块是否已启用并正在运行。例如,如果有人创建module.php跟踪某人点击某个特定链接的次数,那么该软件本身就不会知道它,我需要它才能从中获取统计信息。

1 个答案:

答案 0 :(得分:1)

嗯,您可能对Singleton设计模式(http://en.wikipedia.org/wiki/Singleton_patternhttp://www.phptherightway.com/pages/Design-Patterns.html)感兴趣。

在这种情况下,您的配置数组中有一个类列表,并调用" getInstance()"当你真的想要用实际模块做某事时。

另外,看一下Factory模式,它也可能对你的目的有用。