我目前正在通过php进行预订,以下内容使我有些困惑。该代码的一部分是;
$filesInFolder = new DirectoryIterator( $folder);
$file = $filesInFolder->current();
$filename = $file->getFilename();
我(想我)了解到,$filesInFolder = new DirectoryIterator( $folder)
创建的新实例DirectoryIterator( $folder)
中$filesInFolder
,并且$file = $filesInFolder->current()
在调用方法current()
中$file
。
我不明白的是这里是方法getFilename()
的$file->getFilename()
来源。
是在$file = $filesInFolder->current()
创建类的新实例$file
还是发生其他事情?
谢谢
您的问题很有效。确实令人困惑。而且,获取的步骤->current()
可以省略。这也将起作用:
$filesInFolder = new DirectoryIterator( $folder);
$filename = $filesInFolder->getFilename();
所述DirectoryIterator类公开的方法的电流:
返回当前
DirectoryIterator
项目。
这实际上是接口current
方法的Iterator
实现。
这里令人困惑的是,by返回的对象DirectoryIterator::current
还是DirectoryIterator
该类的对象。此类将您期望在单独的类中分离的部分合并为一个:
SeekableIterator
方法(如next
,rewind
,seek
),在其工作收集的文件,和getFilename
,getSize
),它的工作电流文件。因此,当这些元素在一个对象中组合在一起时,您无需调用current
,尽管有些人仍然希望这样做,以便与其他Iterable
类一起使用。
注意:通常,您将以Iterable
这种方式编写代码:
foreach (new DirectoryIterator( $folder) as $file) {
$filename = $file->getFilename();
// ... etc, maybe break;
}
这样,您还可以处理根本没有匹配文件的情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句