繁体   English   中英

如何使对象可以全局访问?

how to make objects globally accessible?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有此代码:

class IC_Core {

    /**
     * Database
     * @var IC_Database
     */
    public static $db = NULL;

    /**
     * Core
     * @var IC_Core
     */
    protected static $_instance = NULL;

    private function __construct() {

    }

    public static function getInstance() {
        if ( ! is_object(self::$_instance)) {
            self::$_instance = new self();
            self::initialize(self::$_instance);
        }
        return self::$_instance;
    }

    private static function initialize(IC_Core $IC_Core) {
        self::$db = new IC_Database($IC_Core);
    }

}

但是当我想通过以下方式访问IC_Database时:

$IC = IC_Core::getInstance();
$IC->db->add() // it says that its not an object.

我认为问题出在self :: $ db = new IC_Database($ IC_Core);

但我不知道如何使它工作。

有人可以帮我吗=)

谢谢!

2 个回复

在我看来, initialize应该是一个实例方法,而不是静态方法。 然后应该使用$this->db而不是self::$db

    public static function getInstance() {
        if ( ! is_object(self::$_instance)) {
            self::$_instance = new self();
            self::$_instance->initialize();
        }
        return self::$_instance;
    }

    private function initialize() {
        $this->db = new IC_Database($this);
    }

您甚至可以将initialize方法的内容放入构造函数中,这样就不必担心调用它。

$ db属性被声明为static因此您必须使用双冒号访问它。 箭头符号仅适用于非静态属性。

$IC = IC_Core::getInstance();
IC_Core::$db->add();
1 如何使对象方法可全局访问

我正在做一个voip项目。 我有2页,一页用于拨出电话,另一页仅用于接听电话。 我正在使用一个外部js文件,其中定义了一些对象方法,因此我可以在组件的任何位置访问它们。 问题: 我正在使用相同的文件来接听电话和拨打电话(我的对象方法应根据通话类型做不同的事情) 我 ...

2 MobileSubstrate:如何使对象可全局访问

我目前正在使用substrate.h进行MobileSubstrate扩展,并且我需要一个可以从每个包访问的对象。 据我所知(并尝试过),如果我只在代码中放置一个static变量,这只会使对象在整个当前注入的包(例如SpringBoard或任何App)中都可以访问。 因此,我想知道从 ...

3 如何使对象在PHP中可全局访问

我已将数据库连接对象保存在$ con变量中。 当我在函数内部使用它时,它是不可访问的。 例如 在没有通过函数参数传递$link getnews()函数中,我无法使用它。 我的问题是,如何使用$link对象而不将其传递给函数作为参数? ...

2015-12-19 07:36:41 3 616   php/ mysql
4 React-使样式对象可全局访问

我正在开发一个基本的颜色选择器应用程序,以学习React并对其有更好的理解。 这种工作方式是我有一个文本字段,该文本字段接受十六进制值,并在您键入时将其显示为背景色。 我想发生的事情是,当您清除文本字段时,背景默认不返回。 现在,它恢复为以前输入的颜色。到目前为止,我的功能代码如下: ...

5 如何使对象在MVC中可全局访问

我为我的MVC应用程序创建了一个自定义缓存提供程序。 我将使用此类将会话数据存储/检索到外部服务(例如memcached或Redis)。 我想在应用程序启动时创建一次对象实例,这样我就可以从任何控制器中引用该对象,而只需要“实例化”一次实例。 我当时想在Global.asax Appl ...

6 声明和访问全局对象

众所周知的方法是先声明int globalVar = 0 ,然后-在extern int globalVar;使用它extern int globalVar; 但这不适用于用户定义类中的对象! 这是我所做的一个示例: file1.cpp: file2.cpp: 这是 ...

7 如何制作可全局访问的对象

嗨,我有一些课程的集合,其中一些应该可以全局访问。 我在Zend_Registry中发现了类似的东西,但阅读其代码后,我无法理解对静态函数的调用如何返回类的初始化实例。 我需要做类似的事情: 在这里,我已经过滤了Request对象,并且我希望控制器能够到达已经过滤的请求。 ...

8 如何全局访问JavaScript对象

我正在用PHP创建一个基于JavaScript的游戏,需要帮助存储用户的帐户对象。 在JavaScript中构建播放器对象后,如何在每个页面中使用此对象? 我试图将用户的帐户对象添加到窗口对象,但没有任何运气。 此代码放在所有页面上使用的菜单中。 每次加载页面时,都会创建一个新 ...

9 如何访问全局iframe对象

当我在iframe中时,我可以使用parent类访问parent类的全局变量 它将访问父级的jQuery并从dom中删除选择器。 除了父母,我该怎么办? 要访问iframe全局对象? ...

10 全局访问databasehelper对象

每当我需要创建SQLiteOpenHelper'databasehelper'对象时,都需要在函数调用中传递上下文。 dbUtils.setEntityValues(this, moduleId, sendTo) “ this”参数是指活动上下文。 每次新的databasehelp ...

2011-03-09 16:03:45 2 2627   android
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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