功能中使用的PDO的范围

时间:2013-05-22 00:12:00

标签: php mysql class pdo scope

我正在使用类似下面的结构 -

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的对象存在,或者它是否会在函数范围结束后被销毁。

2 个答案:

答案 0 :(得分:2)

条形$dbo后将被“销毁”。

  

当“refcount”达到零时,变量容器被破坏。当链接到变量容器的任何符号离开范围时(例如,当函数结束时)或者在符号上调用unset()时,“refcount”减1。

Reference Counting Basics

答案 1 :(得分: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){
      ...
      }
}