ホームページ >バックエンド開発 >PHPチュートリアル >シングルトン パターンを使用するクラスには、静的メンバーに関していくつかの問題があります。
シングルトン モードの次のデータベース クラス:
class Database{ static private $db; private function __construct(){ } static function getInstance(){ if(self::$db){ return self::$db; }else{ self::$db = new self(); return self::$db; } }}
わかりました、私の質問は間違っています。これはオブジェクトをインスタンス化するためのステートメントであり、メンバー
self と $this はどちらもクラス自体
を参照しますが、前者は静的メソッドで使用され、後者は動的メソッド (インスタンス化されたオブジェクト) で使用されます。メソッド
new はインスタンス化されたクラスであり、コンストラクターは静的であることはできません。
歴史的な理由により、E_STRICT レベルのチェックは、 PHP クラスには静的または非静的はありません
error_reporting(E_ALL ^ E_NOTICE ^ E_STRICT );class T { function a() { echo 'abc'; }}T::a();abc
self と $this は両方ともクラス自体を参照します
前者は静的メソッドで使用され、後者は動的 (インスタンス化されたオブジェクト) メソッドで使用されます
new はインスタンス化されたメソッドです
歴史的な理由により、E_STRICT レベルのチェックがオフになっている場合、PHP クラスは静的ではなくなることに注意してください