0

我从mysql切换到pgsql,因为 IDE 我正在使用 Visual Studio Code。当我使用mysql时,自动完成和打字工作得很好,例如:

declare(strict_types=1);

class DatabaseConnectionMySql
{
    private \mysqli $connection; // <--- type \mysqli !!!

    public function __construct()
    {
        $this->connection = new mysqli(/*... */);
    }

    /**
     * @return bool
     */
    public function isConnected()
    {
        if ($this->connection) return true;
        return false;
    }

    /**
     * @return bool
     */
    public function disconnect()
    {
        return mysqli_close($this->connection);
    }
}

当我用pgsql做同样的事情时,我的 IDE 不知道类型。

declare(strict_types=1);

class DatabaseConnectionPgSql
{

    private $connection = false; // <-- No typing

    public function __construct(string $connectionString)
    {
        $this->connection = pg_connect($connectionString);
    }

    public function isConnected()
    {
        if ($this->connection) return true;
        return false;
    }

    public function disconnect()
    {
        return pg_close($this->connection);
    }
}

根据文档pg_connect函数的返回类型是要么resource|false要么PgSql\Connection|false

private resource|false $connection = false;
private \PgSql\Connection|false $connection = false;

但是在这两种情况下,IDE 都说它不知道类型resource和 / 或\PgSql\Connection.

未定义类型 PgSql\Connection

我正在使用插件 PHP Intelephense v1.8.1。

  • 我改成php.executablepath了我的 php8/php.exe
  • 添加pgsql并添加pdo_pgsql到插件设置 Intelephense: Stubs

另外我想知道为什么我的 IDE 告诉我该pg_connect函数返回resource|false而不是PgSql\Connection,因为更改日志指出该类型PgSql\Connection是从8.1.0版本开始返回的。那么为什么 VSC / Intellephense 不知道 PgSql 类型呢?

  • PHP 8.1.2
4

0 回答 0