我有一個FileLocations
類,它將路徑存儲到特定文件。驗證數組中的多個項目
class FileLocations
{
/**
* @var array
*/
private $files = [];
/**
* @param array $files
*
* @throws \Exception
*/
public function __construct (array $files) {
if (!$this->areValidFiles($files)) {
throw new Exception;
}
$this->files = $files;
}
/**
* @param $files
*
* @return bool
*/
private function areValidFiles (array $files) {
foreach ($files as $file) {
return is_file($file);
}
return false;
}
/**
* @return array
*/
public function getFiles() {
return $this->files;
}
}
我想驗證每個文件(is_file
),所以我做的areValidFiles
功能,通過它得到每個數組索引循環。在每個數組項目上它正在進行檢查。
當我運行這段代碼是這樣的:
$fileLocations = new FileLocations(['doesExist.js', 'doesnotExist.js']);
var_dump($fileLocations->getFiles());
它只做第一個文件的驗證和甚至不reconize有在參數傳遞第二個文件。
它也不會引發異常。
問題
這是如何來,它只是reconizes在驗證 一個文件,而不是拋出的甚至不存在 第二個文件例外嗎?
我該如何使它能夠在
areValidFiles
函數中傳遞更多參數 ?
的'返回is_file()'導致在foreach到所述第一時間之後中止。刪除這是解決這個問題的第一步。當它發現一個不存在的文件時會發生什麼? – Bjorn 2015-01-04 13:51:28
@Bjorn它應該在__construct方法中拋出一個異常。刪除它意味着什麼? – Bas 2015-01-04 13:52:04
嘗試返回一個數組與布爾值在areValidFiles() – 2015-01-04 13:52:45