我正在尝试了解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];
}
}
答案 0 :(得分:1)
您创建单身的方法看起来是正确的。
尝试使用空构造函数,那里的die()语句可能存在问题。
答案 1 :(得分:0)
是否:// <-- dumps nothing
表示您看到“NULL”正在呈现或什么都没有?
也许你有一些隐藏var_dump()输出的输出缓冲。