1

我正在尝试了解 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];
    }
}
4

2 回答 2

1

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

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

于 2012-05-10T17:14:27.457 回答
0

是否:// <-- dumps nothing意味着您看到“NULL”被渲染或什么都没有?

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

于 2012-05-12T19:40:48.823 回答