2012-05-10 9 views
1

私はOOPについて学び、PHPスクリプト内で設定オブジェクトを返すシングルトンを作成しようとしています。何らかの理由で、インスタンスが決して設定されないようです。PHPシングルトンオブジェクトが作成されていません

シングルトンがそのコンストラクトを通過するときはいつでも、メッセージgetting settingsをエコーし​​ています(既存のインスタンスを返すだけであればサイレントです)。私は直後にそれをダンプしようとする場合でも、作成されていないよう$instance - これはスクリプト内から呼び出された

、私はmySettings::getSettings()を呼び出すたびに1つずつ、これらgetting settingsメッセージの数十を取得しています作成されます。

誰かが間違っていると指摘できますか?

は、ここでは、コードです:

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]; 
    } 
} 
+1

コードをテストしました。作品。 – Kevin

+0

あなたのコードはうまく動作します。 – webbiedave

+0

@julio、webbiedaveと私は両方とも正しく動作するようになった。おそらく他の場所(クラス外)が間違っているかもしれません。助けを借りてくれてありがとう。 – Kristian

答えて

1

シングルトンを作成するためのあなたのアプローチが正しい見えます。

空のコンストラクタを使用すると、そのdie()文に問題がある可能性があります。

+0

もし死んでいたら、それは死のメッセージではないでしょうか? – Kristian

+0

@ Kristian - はい、実際にはdie文が動作していますが、設定ファイルに不正なパスや空の値を与えると、死んでしまいます。また、 '$ var = mySettings :: getSettings()'によって返された値を他の場所にダンプする場合、期待値があります。 – julio

0

Does:// <-- dumps nothing "NULL"が表示されるか、まったく表示されません。

var_dump()出力を隠す出力バッファリングがあるかもしれません。

関連する問題