在Java里,流是一个很重要的概念。
流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。根据流的方向又可以分为输入流和输出流,同时可以在其外围再套上其它流,比如缓冲流,这样就可以得到更多流处理方法。
PHP里的流和Java里的流实际上是同一个概念,只是简单了一点。由于PHP主要用于Web开发,所以“流”这块的概念被提到的较少。如果有Java基础,对于PHP里的流就更容易理解了。其实PHP里的许多高级特性,比如SPL,异常,过滤器等都参考了Java的实现,在理念和原理上同出一辙。
比如下面是一段PHP SPL标准库的用法(遍历目录,查找固定条件的文件):
/**
* 提供 $path 并生成对应的目录迭代器
*/
public function __construct($path)
{
parent::__construct(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)));
}
/**
* 检查文件扩展名是否满足条件
*/
public function accept()
{
$item = $this->getInnerIterator();
if ($item->isFile() && in_array(pathinfo($item->getFilename(), PATHINFO_EXTENSION), $this->ext))
{
return TRUE;
}
}
}
// 实例化
foreach (new RecursiveFileFilterIterator(\'D:/history\') as $item)
{
echo $item . PHP_EOL;
}
本文地址:https://www.stayed.cn/item/7121
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我