標準に関する質問です。PHP:インスタンス生成を妨げるクラスコンストラクタの標準
PHPセッション管理用のラッパークラスを作成しました。これは、セッションデータをアクセスする特定の内部モジュールに基づいてセッションデータを自動的に整理するのに役立ちます。これは、特定の時点で単一のセッションしか存在しないため、getInstance()
メソッドを使用して、シングルトンとして設計されています。また、私は、session_start()
が失敗した(おそらく制限されていた)チャンスでセッションオブジェクトのインスタンス化を防ぐことができるので、これは私の利益になりました。例として:
public static function getInstance(){
if(!self::$_instance || !session_id()){
if(session_start()){
self::$_instance = new self(session_id());
}else{
return;
}
}
return self::$_instance;
}
私の質問は次のとおりです。ゲートウェイgetInstance()
メソッドの使用はいくつかの理由でここで自然に動作しますが、オブジェクトが外部条件に依存している場合は、オブジェクトの作成を制御するためにpublic static getInstance()
またはcreate()
メソッドをクラスに実装するのが一般的ですか?
シングルトンの場合はgetInstance()
、複数のインスタンスオブジェクトの場合はcreate()
を提供するという慣習に固執しています。
TL;私はすべてのオブジェクトのインスタンス化を制御するために、getInstance()
とcreate()
メソッドを使用し続けます。私はそれを間違っているのですか?
EDIT:私の質問ビットの絞り込み。シングルトンのためにgetInstance()
を使用することを除いて、私のコンストラクタはcreate()
メソッドでラップされています。真のコンストラクタから例外をスローするか、またはcreate()
からfalseを返す必要がありますか?
シングルトンパターンが悪くないことは確かです。それを過度に使うことは悪いです(何が悪いことも悪いので)。 :) – egis
節度のすべてのもの、私は思います:) –
ありがとうございます**エルYobo **;私はあなたの提案を見てみましょう:) – Dan