- class DatabaseConnection {
- private static $db;
-
- public static function get() {
- if ( self::$db == null ){
- echo __LINE__;
- self::$db = new DatabaseConnection();
- return self::$_handle
- }
-
- プライベート関数 __construct() {
- $dsn = 'mysql://root:password@localhost/写真';
- self::$_handle = 123;
-
- }
-
- print( "Handle = ".DatabaseConnection::get()." ); ()."n" );
-
- 9ハンドル = 123
ハンドル = 123
【0.1秒で完了】
-
- 例 2、PHP シングルトン モード。
class DatabaseConnection { public static function get() { static $db = null;//ここで例 1 の静的メンバーを静的変数に変更します if ( $db = = null ){ echo __LINE__; $db = new DatabaseConnection(); } - return $db;
- }
-
- private $_handle = null;//これは例 1 の静的削除を表します
-
- private 関数 __construct ()
- {
- $dsn = 'mysql://root:password@localhost/photos';
- $this->_handle =123; }
- // ここにプライベート メンバー $_handle を取得する新しいメソッドが追加されます
- public function handle()
- {
- return $this->_handle; }
- }
-
- print( "Handle = ".DatabaseConnection::get()->handle()."n" ); ( "ハンドル = ".DatabaseConnection::get()->handle()."n" );
-
-
-
- コードをコピー
-
-
- 8ハンドル = 123
ハンドル = 123
【0.1秒で終了】
これら 2 つの例のうち、私の個人的な好みは 2 番目です。
四。生成できるインスタンスの数を制限する
-
-
-
-
-
- class DatabaseConnection {
- public static function get($persistent_id=0) {//識別子を渡します
- static $db = array();// ここで配列に変更します
if ( !array_key_exists($persistent_id, $db) ) { echo __LINE__; $db[$persistent_id] = new DatabaseConnection(); } private $_handle = null; private function __construct() { $dsn = 'mysql://root:password@localhost/photos'; $this->_handle =123; // ここにプライベート メンバー $_handle を追加します メソッド public function handle() { return $this->_handle; } - }
-
- print( "Handle = ".DatabaseConnection::get(1)->handle()."n" ); = ".DatabaseConnection::get(2)->handle()."n" );
- print( "Handle = ".DatabaseConnection::get(2)->handle()." n" );
- ?>
-
-
-
- コードをコピー
-
-
- 6ハンドル = 123
6ハンドル=123
ハンドル = 123
【0.1秒で終了】
さらに、静的メソッドを使用すると、PHP のシングルトン モードを簡単に実装できます。
もちろん、グローバル変数ストレージを使用することも可能ですが、このアプローチは小規模なアプリケーションにのみ適しています。
大規模なアプリケーションでは、グローバル変数の使用を避け、オブジェクトとメソッドを使用してリソースにアクセスします。
-
-
-
-
-
-
-
-
-
-
-
|