我有一个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