不确定如何问这个问题。但我使用 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 说找不到方法prepare
或execute
。
如果我将 $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/