Closed LeoOnTheEarth closed 8 years ago
這就是要寫 test 的原因了,因為實際上在現有系統中沒有出現需要用到這個參數的case,所以這個漏洞從來沒發生過問題。
這邊的設計邏輯應該是這樣
/**
* Constructor.
*
* @param string $name The instance name.
* @param \SplPriorityQueue|array $paths Paths to scan assets.
*/
public function __construct($name = 'windwalker', $paths = null)
{
$this->name = $name;
// Setup dependencies.
$this->paths = $paths instanceof \SplPriorityQueue ? $paths : new \SplPriorityQueue((array) $paths);
$this->registerPaths(false);
}
這樣就不會有問題了
032246572137dd2fefb8a1d4ac7e1c03aac7e4f7
$paths
phpdoc 上是被定義成SplPriorityQueue
物件 但是在建構子會被強制轉型成array
可能要討論一下$paths
明確的定義 是否只允許SplPriorityQueue
與null
兩種型態另外一點是,若
$paths
不是帶SplPriorityQueue
與null
在進行$this->registerPaths(false);
時會因為$this->paths
不是SplPriorityQueue
而出錯