1

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

getting settingsシングルトンがその構造を通過するたびにメッセージをエコーし​​ます(既存のインスタンスを返すだけの場合はサイレントです)。

これがスクリプト内から呼び出されると、getting settings呼び出すたびに 1 つずつ、数十のメッセージ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];
    }
}
4

2 に答える 2

1

シングルトンを作成するアプローチは正しいようです。

空のコンストラクターで試してください。その die() ステートメントに問題がある可能性があります。

于 2012-05-10T17:14:27.457 に答える
0

// <-- dumps nothing「NULL」がレンダリングされているか、何も表示されていないことを意味しますか?

おそらく、var_dump() の出力を隠す出力バッファリングがあるでしょう。

于 2012-05-12T19:40:48.823 に答える