未创建php单例对象

未创建php单例对象,php,oop,singleton,Php,Oop,Singleton,我试图学习OOP,并创建一个单例来返回PHP脚本中的设置对象。出于某种原因,该实例似乎从未设置过 每当singleton经过它的构造时,我都会回显一条消息获取设置(如果它只是返回现有实例,那么它是静默的) 当从脚本中调用它时,我会收到几十条获取设置消息,每次调用mySettings::getSettings()--$instance时,即使在创建后立即尝试转储它,也似乎没有创建它 有人能指出我哪里出了问题吗 代码如下: class mySettings { private $settin

我试图学习OOP,并创建一个单例来返回PHP脚本中的设置对象。出于某种原因,该实例似乎从未设置过

每当singleton经过它的构造时,我都会回显一条消息
获取设置
(如果它只是返回现有实例,那么它是静默的)

当从脚本中调用它时,我会收到几十条
获取设置
消息,每次调用
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];
    }
}
类mySettings{
私人设置;
私有静态实例;
私有函数_u构造(){
$configfile=“myconfig.ini”;
如果(!$this->settings=parse_ini_file($configfile)){
die('未找到配置/未分析配置');
}
}
公共静态函数getSettings(){
如果(!self::$instance){
echo“正在获取设置--未找到实例!”;
self::$instance=newmysettings();
var_dump(self::$instance);//设置[$key]=$value;
}
公共函数getParam($key){
返回$this->settings[$key];
}
}

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


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

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


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

确实:
/确实:
//如果它正在死亡,它会说死亡消息,不是吗?@Kristian——是的,事实上,死亡语句是可操作的,如果我给配置文件一个坏路径或空值,它就会死亡。另外,如果我转储
$var=mySettings::getSettings()返回的值
在其他地方,它确实有预期的值。如果它正在消亡,它会显示die消息,不是吗?@Kristian--是的,事实上die语句是可操作的,如果我为配置文件提供了错误的路径或空值,它将消亡。此外,如果我转储由
$var=mySettings::getSettings()返回的值
在其他地方,它确实具有预期的值。测试了您的代码。有效。@julio、webbiedave和我都让它正常工作。可能是在其他地方(在该类之外)出了问题。谢谢大家的帮助。我会用其他可能是问题的函数进行更新,并查看这些函数。代码完全有效。我认为错误在其他地方。你能展示你的真实代码吗?测试了你的代码。有效。@julio、webbiedave和我都正确地使用了它。可能是其他地方(在该类之外)的某个地方出了问题。谢谢大家的帮助。我将使用其他可能是问题的函数进行更新,并查看这些函数。代码完全有效。我认为错误在其他地方。你能展示你的真实代码吗?