2

私はPHPのオブジェクト指向の側面を学ぼうとしてきましたが、疑問に思っていました:

_constructor を使用してデータベースへの接続を開き、そのクラス内の関数 (insert など) を使用した場合、定義された __destructor はメソッド「insert」の実行後に接続を閉じますか?

class data(){
  function __constructor {
    // connect to db
  }

  function insert($data){
    // mysql_query(...)
  }

  function __destructor {
    // close connection to db
  }
}

$obj = new db();
$obj->insert('mumbo jumbo');

または、データベースへの接続はまだ開いていますか? オブジェクトが破棄された場合にのみデストラクタが実行されると読んだからです。しかし、どうやってオブジェクトを破壊するのでしょうか?

4

5 に答える 5

6

PHP では、オブジェクトがスコープ外になると破棄されます。これは通常、スクリプトの実行が停止したとき、またはスクリプト内で作成された関数が終了したときですが、次を使用してコードの早い段階でオブジェクトを破棄できます。

unset($my_variable);  

したがって、あなたの質問に答えるには、ほとんどの状況で、特に小さなスクリプトを使用して、デストラクタが DB を閉じることを処理できるようにする必要があります。

于 2009-08-19T18:10:42.113 に答える
3

はい、正しい名前を使用している限り、それは正常に機能し、そこにあるものとは対照的に、コンストラクターとデストラクターに__construct()使用します。__destruct()

于 2009-08-19T18:12:21.033 に答える
2

オブジェクトへの参照がなくなると、オブジェクトは破棄されます。たとえばunset()、オブジェクトを保持している最後の変数を -ting するか、スクリプトの実行が終了すると、オブジェクトは破棄されます。

ちなみに、魔法のメソッドの名前は__constructand__destructで、末尾の はありません-or

于 2009-08-19T18:12:33.140 に答える
1

ところで、コンストラクタとデストラクタは __construct と __destruct と呼ばれます。

__destructor は、 the への参照がなくなったときに呼び出されますdb。通常、これはオブジェクトがスコープ外に出たときに発生しますが、オブジェクトへの他の参照を保存している場合、これは発生しません。への参照を削除できdbます

unset($obj);

$obj をどこかに保存した場合も同様です。

于 2009-08-19T18:13:54.090 に答える
0

PHPはデータベースへの永続的な接続もサポートしていることに注意してください。つまり、オブジェクトが破棄された場合でも、DBへの接続は「バックグラウンドで」開いたままであり、対応するpconnect(またはPDOアナログ)を呼び出すときに再利用されます。次回。

于 2009-08-19T18:20:24.887 に答える