シングルトン パターンを使用するクラスには、静的メンバーに関していくつかの問題があります。

WBOY
リリース: 2016-06-13 12:27:34
オリジナル
797 人が閲覧しました

シングルトン モードを使用するクラスの静的メンバーに関していくつかの問題があります

この投稿は、2015-11-16 17:08:20 に fox_lin によって最終編集されました 次のシングルトン モード データベース クラス:
<br />class Database{<br />	static private $db;<br /><br />	private function __construct(){<br /><br />	}<br />	static function getInstance(){<br />		if(self::$db){<br />			return self::$db;<br />		}else{<br />			self::$db = new self();<br />			return self::$db;<br />		}<br />		<br />	}<br />}<br />
ログイン後にコピー

静的メソッドは非静的メンバーを呼び出すことができないという格言があります。
このクラスの定義には次の文があります: self::$db = new self(); この self() メソッドは非静的コンストラクターではないでしょうか?
それとも、「静的メソッドは非静的メンバーを呼び出すことができない」という記述は不正確ですか?先輩方、アドバイスをお願いします。
------解決策----------------------
self と $this はどちらもクラス自体を参照しています
前者は静的メソッドで使用され、後者は動的 (インスタンス化されたオブジェクト) メソッドで使用されるというだけです

new はインスタンス化されたクラスであり、コンストラクターを静的にすることはできません

歴史的な理由により、E_STRICT レベルのチェックがオフになっている場合、PHP クラスは静的ではなくなることに注意してください
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート