Join::join() raises TypeError instead of InvalidArgumentException for an invalid name without a leading string
維護者通常 2 天內回覆
已經有一個關聯 PR 被合併了。
- #223 來自 @simon-mundy —— 已合併
評估
研究方向
Read the validation in src/Sql/Join.php around the referenced line and the forInvalidJoinName() signature in src/Sql/Exception/InvalidArgumentException.php. Check the reported inputs: the call should raise InvalidArgumentException rather than TypeError, and for a non-string element the message should name its type. A linked pull request is already open, so check its status before starting.
由索引模型根據 Issue 內容生成。
描述
Package Version
0.6.x-dev @ e022af5c
Php Version
8.3, 8.4, 8.5
Database Engine
Any
Basic Information
Join::join() rejects a name array that is not a single-element associative array, and passes the array's first element into the message (Join.php#L97):
throw Exception\InvalidArgumentException::forInvalidJoinName(array_shift($name));
forInvalidJoinName() takes a string (InvalidArgumentException.php#L134). When the first element is not a string (an empty array, an unaliased Select, an integer), building the exception raises a TypeError first.
This came in with #192, which replaced sprintf(...) (which accepted any type) with the typed named constructor. #192 notes that the same unsoundness was re-attributed to forInvalidJoinName in the analyzer baseline.
Steps to Reproduce
(new Join())->join([], 'a = b')(new Join())->join([new Select('foo')], 'a = b')(new Join())->join([5], 'a = b')
Expected Behavior
PhpDb\Sql\Exception\InvalidArgumentException. Where the element is not a string, the message names its type, e.g. join() expects 'int' as a single element associative array.
Actual behavior?
TypeError: PhpDb\Sql\Exception\InvalidArgumentException::forInvalidJoinName(): Argument #1 ($name) must be of type string, null given, called in src/Sql/Join.php on line 115
- 主要語言
- PHP
- 星號
- 18
- 分支
- 8
- 平均合併
- 2 天 6 小時
- 30 天內合併 PR
- 30
環境準備
- 提供 Dockerfile 或 Docker Compose 檔案
- 沒有 Pull Request 範本
- 沒有貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
php-db/phpdb 的其他 Issue
-
bug
難度 2/5 1-3 小時 新手友好度 82/100
維護者通常 2 天內回覆
-
RFC
難度 3/5 1-2 天 新手友好度 66/100
維護者通常 2 天內回覆
-
RFC
難度 5/5 一週以上 新手友好度 38/100
維護者通常 2 天內回覆
-
RFC
難度 3/5 1-2 天 新手友好度 68/100
維護者通常 2 天內回覆
-
RFC
難度 4/5 3-5 天 新手友好度 45/100
維護者通常 2 天內回覆
相似的 Issue
-
0.kind: enhancement 9.needs: package (update)
難度 2/5 1-3 小時 新手友好度 67/100
NixOS/nixpkgs#577156 · 3 個 reaction ·
維護者通常 1 天內回覆
-
bug
難度 2/5 1-3 小時 新手友好度 76/100
MagnaCapax/PMSS#1142 · 1 則留言 ·
維護者通常 3 天內回覆
-
Native-arrow select renders a second Jetpack chevron可能重新可做 關聯的 PR 已關閉且未合併。 未關閉
難度 2/5 1-3 小時 新手友好度 68/100
Automattic/static-site-importer#2294 ·
維護者通常 1 天內回覆
-
bug 🐛
難度 2/5 1-3 小時 新手友好度 72/100
netalertx/NetAlertX#1856 · 1 個 reaction ·
維護者通常 1 天內回覆
-
Bug Status: Needs Triage
難度 2/5 1-3 小時 新手友好度 78/100
維護者通常 1 天內回覆