如何修改 PHP 类以接受 PgSql\Result 作为属性

问题描述 投票:0回答:1

我需要找到一种方法(如果可能的话)使 PHP 类接受 PgSql\Result 对象作为属性。 PHP 8.1+ 已将 pgsql result 资源迁移到 PgSQL\Result 实例。 在 PHP 的早期版本中,我可以像这样设置属性:

var $results;
....
$this->results = pg_query($conn, "SELECT author, email FROM authors");

但是该操作现在会导致:

PHP 致命错误:未捕获异常:[无活动文件] 中不允许序列化“PgSql\Result”

本页详细介绍了 PHP 8.1 中的相关更改: https://php.watch/versions/8.1/PgSQL-resource

尝试将该属性声明为 PgSQL\Result 对象,但不成功。 我可能声明错误。 我对 OOP 不是特别精通。

  • 编辑

用最简单的话来说,这就是我想要的工作——如果可能的话:

class foo
{
    var $results; // or whatever needs to replace 'var' to get it to work with a PgSql\Result object

    function __construct()
    {
        $this->results = pg_query($conn, "SELECT author, email FROM authors"); 
    }
}
---------------------
$x = new foo();
$row = pg_fetch_row($x->results);
php postgresql
1个回答
0
投票

感谢所有回复的人。 我发现此操作是在“会话”对象上“直接”执行的。 如果我创建一个非会话对象,代码可以正常工作。 至于为什么 SELECT 例程发生在构造函数内部,我所能想到的只是创建此应用程序的人希望使代码维护尽可能困难。

© www.soinside.com 2019 - 2024. All rights reserved.