全局变量中的变量:“全局变量{变量}”。它有效,但可以吗?

时间:2015-03-29 01:28:57

标签: php oop wordpress-plugin global variable-variables

TL; DR:说我有一个全局实例化的类

$GLOBALS['my_plugin'] = instance(); 

我希望在其他地方使用它,但我不知道名字' my_plugin'。其实我当然是这样做的,但是我的助手文件不是。为了我使用;

$plugin_name = 'my_plugin';
global $plugin_name, ${$plugin_name};

它有效我可以访问$ my_plugin变量并使用该对象就好了。我正在做的基本上是使用"变量",但它有点感觉很奇怪。可以吗?或者有更好的方法来解决这个问题。

长版

// contents of plugin.php
class myplugin_class {
    $_instance = null;
    public $plugin_name = 'my_plugin';

    public function __construct() {
        $this->init();
    }
    public static function instance() {
        if ( is_null( self::$_instance ) ) {
            self::$_instance = new self();
        }
        return self::$_instance;
    }
    function init() {
       $this->assign_global();
       $this->include_helper();
    }
    function assign_global() {
        global $plugin_slug;
        $plugin_slug = $this->plugin_name;
    }
    function include_helper() {
        include_once('helper.php' );
    }


}//end class
function plug_inst() {
    return myplugin_class::instance();
}

$GLOBALS['my_plugin'] = plug_inst();

Helper.php

// contents of helper.php
class helper_class {
    public function __construct() {
        $this->some_function_that_needs_my_plugin_object();
    }
    function some_function_that_needs_my_plugin_object() {
        global $plugin_slug, ${$plugin_slug};
        print_r(${$plugin_slug});
        //It gives me the $my_plugin object I want. It's all good, it works. But is it OK?
    }
}

1 个答案:

答案 0 :(得分:1)

更深层次,我的意思是更深入搜索;我发现a。)即使它工作也不适合在全局变量中使用变量。 b。)用一个函数来检索它应该没问题。