php单例对象未创建

时间:2012-05-10 17:10:41

标签: php oop singleton

我正在尝试了解OOP,并创建一个单例来返回PHP脚本中的设置对象。出于某种原因,实例似乎永远不会被设置。

我在单身人士通过其构造时随时回复消息getting settings(如果它只是返回现有实例,则它是静默的)。

当在脚本中调用此消息时,我会收到数十封getting settings条消息,每次拨打mySettings::getSettings()时都会显示一条消息 - $instance似乎不是创建,即使我在创建它后立即尝试转储它。

有谁可以指出我哪里出错?

以下是代码:

class mySettings {
    private $settings;
    private static $instance;

    private function __construct(){
        $configfile = "myconfig.ini";
        if(!$this->settings = parse_ini_file( $configfile )){
            die('CONFIG NOT FOUND/PARSED');
        }
    }

    public static function getSettings(){
        if ( !self::$instance ){
            echo "getting settings-- no instance found!";
            self::$instance = new mySettings();
            var_dump(self::$instance); // <-- dumps nothing
        }
        return self::$instance;
    }

    public function setParam( $key, $value ){
        $this->settings[$key] = $value;
    }

    public function getParam( $key ){
        return $this->settings[$key];
    }
}

2 个答案:

答案 0 :(得分:1)

您创建单身的方法看起来是正确的。

尝试使用空构造函数,那里的die()语句可能存在问题。

答案 1 :(得分:0)

是否:// <-- dumps nothing表示您看到“NULL”正在呈现或什么都没有?

也许你有一些隐藏var_dump()输出的输出缓冲。