不确定如何问这个问题。但我使用PhpStorm作为我的IDE。PhpStorm不识别类别中的PDO方法
我创建了一个类来处理我的数据库检索和操作。在这里面我有这样的连接方法:
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的块,它工作正常:
/**
* @param $conn pdo
*/
private function insert($conn) {
$insert = $conn->prepare($sql);
$insert->execute();
}
我很好奇,为什么它不会让我用$this->conn
?虽然没有更多的代码将$this->conn
传递给该方法,但似乎有点多余。
任何想法,我需要做什么不同?
鉴于有每个人做常见的错误,这样可以使一个有用的阅读:[你的第一个数据库包装的儿童疾病(https://phpdelusions.net/pdo/common_mistakes)。例如,你处理异常的方式正在破坏这个伟大的功能。 –