【问题标题】:PhpStorm PDO SQL dialectPhpStorm PDO SQL 方言
【发布时间】:2018-07-27 08:46:47
【问题描述】:

我在 PhpStorm 中总是遇到问题,即我的 PDO 准备语句被下划线标记为“在主题类中找不到方法'(例如执行)'。

是否有可能在 PhpStorm 中将 PDO/prepared 语句添加到 SQL 方言中,这样它就不会再显示警告了?

【问题讨论】:

  • 请添加您目前遇到问题的代码
  • @janmyszkier 这不是重复的,因为我没有收到错误,但是警告(很烦人)
  • 我遇到了任何 PDO 函数的问题,例如 prepare()、execute()、fetch()、...
  • 这与 SQL 方言无关。 这是关于变量/字段的类型提示。您需要正确输入您的$pdo。目前 IDE 不知道 $this->pdo\PDO 的一个实例,因此无法识别 prepare() 方法。因此,$stat 是未知类型(在 IDE 眼中),它也转换为 execute()。按照 Justinas 所说的去做 - 这是最好的方法 - 现在您的 $stat 将被正确识别。否则,您可以按照 janmyszkier 所说的去做——但如果完成上述操作,那应该是不必要的。

标签: php mysql pdo phpstorm prepared-statement


【解决方案1】:

我认为方言意味着在SELECT idPeriod FROM tblPeriod DESC Limit 1 中进行错误检查(不应该是ORDER BY idPeriod DESC 吗?。你的$this->pdo 是什么?如果它是魔术方法并且PHPStorm 没有看到它的实现,那么它会发出警告。简单将文档应用于此字段:

class OPClass {
   /**
    * @property PDO $pdo
    */
   public $pdo;

【讨论】:

  • 如果它不是一个神奇的属性,那么正确的注释是@var(你可以输入/**enter,PhpStorm 会为你生成模板。
【解决方案2】:

在这种情况下

/* @var PDOStatement $stat */
$stat->execute();

将允许PHPStorm理解变量下的Object

【讨论】:

  • 没有必要。在声明中注释 $this->pdo 将自动修复此问题以及许多其他代码智能问题。
  • 我同意,但这只有在您有机会修改该类并且不是供应商提供的情况下才有可能。因此,我建议在您有权访问和拥有所有权的代码中注释变量。
猜你喜欢
  • 1970-01-01
  • 2015-08-05
  • 1970-01-01
  • 2015-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-14
相关资源
最近更新 更多