我从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