0

オブジェクトのプロパティで開いている pgsql データベース接続を維持しようとしています。

データベース接続は、コンストラクターのパラメーターとしてオブジェクトに転送され、プロパティに保存されます。その後、データベース接続を必要とするクラスの関数が呼び出され、プロパティから読み取ります。ただし、どういうわけか、動作中の DB 接続として読み取られません。

オブジェクトの外部で DB 接続を確認しましたが、クラス内の関数が呼び出された後もそこで開いています。

オブジェクトでリソースが閉じているように見えるのはなぜですか? また、開いたままにする方法はありますか?

コード例:

public class test{

    public function __construct($db_conn){
        $this->db_conn = $db_conn;
        var_dump($this->db_conn);      // this returns resource(4) of type (pgsql link)
    }


    public function testDBConn(){           
        var_dump($this->db_conn);          //this returns resource(4) of type (Unknown)   
        $result = pg_query($this->db_conn, 'SELECT * FROM tbl_test');
    }
}

更新:私が使用しているクラスは、実際には別のクラスを拡張しています。これにより、参照によってプロパティを設定しようとすると、「PHP Fatal error: Cannot assign by reference to overloaded object」エラーが発生します。私のクラスが別のクラスを拡張しない場合、参照によるプロパティの設定アプローチはうまく機能します。

オーバーロードされたクラスで動作させる方法はありますか?

4

1 に答える 1