オブジェクトのプロパティで開いている 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」エラーが発生します。私のクラスが別のクラスを拡張しない場合、参照によるプロパティの設定アプローチはうまく機能します。
オーバーロードされたクラスで動作させる方法はありますか?