我正在尝试了解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];
}
}
您创建单例的方法看起来是正确的。
尝试使用空构造函数,那里的 die(( 语句可能存在问题。
是否:// <-- dumps nothing
的意思是你看到一个"NULL"正在渲染或什么都没有?
也许您有一些隐藏 var_dump(( 输出的输出缓冲。