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?
}
}
答案 0 :(得分:1)
更深层次,我的意思是更深入搜索;我发现a。)即使它工作也不适合在全局变量中使用变量。 b。)用一个函数来检索它应该没问题。