0

私は以下のような構造を使用しています -

class foo{
.
.
.

  function bar($colID){
     try{
        $dbo = new PDO(get_db_DSN(), 
                       get_db_USR(), 
                       get_db_PWD());
        $pstmt = $dbo->prepare("SELECT * FROM table_name WHERE col=:colID");
        $pstmt->bindValue(':colID', $colID);
        $pstmt->execute();
        .
        .
        .
     }catch(PDOException e){
      ...
      }
}

オブジェクトが存在するまで PDO が存続するのfooか、関数のスコープの終了直後に PDO が破棄されるのかを知る必要があります。

4

2 に答える 2

2

アフターバー$dboは「破壊」されます。

「refcount」がゼロになると、変数コンテナーは破棄されます。「refcount」は、変数コンテナーにリンクされたシンボルがスコープを離れるとき (たとえば、関数が終了するとき)、またはシンボルに対して unset() が呼び出されると、1 減ります。

参照カウントの基本

于 2013-05-22T00:16:00.297 に答える
0

ガベージコレクションされます...関数が戻った後に利用できるようにしたい場合は、fooプロパティを使用して保存する必要があります。

class foo{
.
.
.

var $dbo;  

  function bar($colID){
     try{
        $this->dbo = new PDO(get_db_DSN(), get_db_USR() get_db_PWD());

        .
        .
        .
     }catch(PDOException e){
      ...
      }
}
于 2013-05-22T00:16:16.813 に答える