我试图弄清楚为什么我的代码中出现此错误。这是代码:<?phpnamespace Db;use \PDO\PDOStatement;function getStmt(string $sql, $pdo): PDOStatement{ $stmt = $pdo->prepare($sql); return $stmt;}这是错误:TypeError: Db\getStmt() 的返回值必须是 PDO\PDOStatement 的实例,返回 PDOStatement 的实例use 语句似乎搞乱了返回类型的检查。如果我去掉 use 语句,错误看起来像这样,因为现在它假定 PDOStatment 是当前命名空间的一部分:TypeError: Db\getStmt() 的返回值必须是 Db\PDOStatement 的实例,返回 PDOStatement 的实例如果我摆脱了命名空间和 use 语句,它不会抱怨,但我想要这两个语句,并且真的不明白原始代码有什么问题。
1 回答
泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
您的返回类型是正确的,但$pdo->prepare
返回\PDOStatement
的是不正确的\PDO\PDOStatement
。$pdo
给出一个类型会有所帮助。
这就是为什么如果将返回类型更改为\PDOStatement
.
- 1 回答
- 0 关注
- 77 浏览
添加回答
举报
0/150
提交
取消