PhpStorm 无法识别类中的 PDO 方法

标签 php pdo phpstorm

不确定如何问这个问题。但我使用 PhpStorm 作为我的 IDE。

我创建了一个类来处理我的数据库检索和操作。在其中我有这个连接方法:

private function connect() {

        $dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->db;
        $options = [
            PDO::ATTR_PERSISTENT => true,
            PDO::ATTR_ERRMODE    => PDO::ERRMODE_EXCEPTION
        ];
        try {
            $this->conn = new PDO($dsn, $this->user, $this->pass, $options);
        } catch(PDOException $e) {
            $this->error = $e->getMessage();
        }

    }

该方法工作正常,但是当我在其他方法中使用 $this->conn 时,PhpStorm 无法将 $this->conn 识别为 PDO 对象。

使用这个方法:

private function insert() {
        $insert = $this->conn->prepare($sql);
        $insert->execute();
    }

PhpStorm 说找不到方法prepareexecute

如果我将 $this->conn 传递给方法并在参数上使用 PHPDoc block ,它工作正常:

/**
 * @param $conn pdo
 */
private function insert($conn) {
    $insert = $conn->prepare($sql);
    $insert->execute();
}

我很好奇为什么它不允许我使用 $this->conn?虽然将 $this->conn 传递给该方法的代码并不多,但似乎有点多余。

关于我需要做哪些不同的事情有什么想法吗?

最佳答案

在属性定义前使用@var:

/**
 * @var PDO
 */
private $conn;

通过这种方式,您可以告诉 PhpStorm,以下变量(属性)的类型为 PDO。请注意,此处的 private 取决于您的代码,这只是一个示例。

看看this了解有关 PhpStorm 中的 PHP 文档注释的更多信息。

关于PhpStorm 无法识别类中的 PDO 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42534993/

相关文章:

php - Xdebug 3-设置 'xdebug.remote_***'已重命名,请参阅升级指南

regex - 使用正则表达式在 PhpStorm 中查找/替换

php - pgSQL : insert date format (leading zeros)?

php - 学说 dql 没有返回 MySQL 所期望的结果

php - 条件 LEFT JOIN MYSQL PHP

php - 使用 mysql、php 和 pdo 选择不区分大小写

php - phpstorm与xdebug的连接

php - 如何绑定(bind)参数年份和日期类型?

php - 为什么我的 PHP PDO 选择在不使用页面限制的情况下?选择中的数组也有问题

javascript - PHP-PDO : How would I wrap some values return into javascript to be rendered on a view?