我試圖弄清楚為什么我的代碼中出現此錯誤。這是代碼:<?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 關注
- 96 瀏覽
添加回答
舉報
0/150
提交
取消