不确定如何提出这个问题.但我使用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();
}
}
Run Code Online (Sandbox Code Playgroud)
该方法工作正常,但当我$this->conn在其他方法中使用时,PhpStorm不会识别$this->conn为PDO对象.
使用此方法:
private function insert() {
$insert = $this->conn->prepare($sql);
$insert->execute();
}
Run Code Online (Sandbox Code Playgroud)
PhpStorm说它无法找到方法prepare或execute.
如果我传入$this->conn方法并在参数上使用PHPDoc块,它工作正常:
/**
* @param $conn pdo
*/
private function insert($conn) {
$insert = $conn->prepare($sql);
$insert->execute();
}
Run Code Online (Sandbox Code Playgroud)
我很好奇它为什么不让我使用$this->conn?虽然传递$this->conn给该方法的代码并不多,但似乎有点多余.
关于我需要采取哪些不同的想法?
Yur*_*rov 12
@var在属性定义之前使用:
/**
* @var PDO
*/
private $conn;
Run Code Online (Sandbox Code Playgroud)
这样你告诉PhpStorm,以下变量(属性)是类型的PDO.请注意,private这取决于您的代码,这只是一个示例.请查看此内容以了解有关PhpStorm中的PHP文档注释的更多信息.
这里正确的做法是声明$ conn类属性并将注释放在那里
例如
myClass {
/**
* @var PDO
*/
private $conn;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2352 次 |
| 最近记录: |