【发布时间】:2012-05-10 17:10:41
【问题描述】:
我正在尝试了解 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];
}
}
【问题讨论】:
-
测试了你的代码。工作。
-
@julio、webbiedave 和我都让它正常工作。也许其他地方(该课程之外)出了问题。
-
感谢各位的帮助。我将更新可能存在问题的其他功能并查看这些功能。
-
代码完全正常。我认为错误在其他地方。你能展示你的真实代码吗?