未创建php单例对象
我试图学习OOP,并创建一个单例来返回PHP脚本中的设置对象。出于某种原因,该实例似乎从未设置过 每当singleton经过它的构造时,我都会回显一条消息未创建php单例对象,php,oop,singleton,Php,Oop,Singleton,我试图学习OOP,并创建一个单例来返回PHP脚本中的设置对象。出于某种原因,该实例似乎从未设置过 每当singleton经过它的构造时,我都会回显一条消息获取设置(如果它只是返回现有实例,那么它是静默的) 当从脚本中调用它时,我会收到几十条获取设置消息,每次调用mySettings::getSettings()--$instance时,即使在创建后立即尝试转储它,也似乎没有创建它 有人能指出我哪里出了问题吗 代码如下: class mySettings { private $settin
获取设置
(如果它只是返回现有实例,那么它是静默的)
当从脚本中调用它时,我会收到几十条获取设置
消息,每次调用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和我都正确地使用了它。可能是其他地方(在该类之外)的某个地方出了问题。谢谢大家的帮助。我将使用其他可能是问题的函数进行更新,并查看这些函数。代码完全有效。我认为错误在其他地方。你能展示你的真实代码吗?