我试图弄清楚为什么我的代码中出现此错误。
这是代码:
<?php
namespace 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 语句,它不会抱怨,但我想要这两个语句,并且真的不明白原始代码有什么问题。
泛舟湖上清波郎朗