ホームページ  >  記事  >  バックエンド開発  >  シングルトン パターンを使用するクラスには、静的メンバーに関していくつかの問題があります。

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

WBOY
WBOYオリジナル
2016-06-13 12:27:34798ブラウズ

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

この投稿は、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 クラスは静的ではなくなることに注意してください
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。