【发布时间】:2015-08-02 00:13:38
【问题描述】:
我正在看 SPL 的教程,这是让我感到困惑的代码
<?php
$directory = new DirectoryIterator('common/images');
foreach ($directory as $file)
{
if($file->isFile())
$files[] = clone $file;
}
echo $files[1]->getFileName();
如果我不在 foreach 循环中使用 clone 关键字,我将看不到文件名。为什么当我将整个对象推入 $files 数组时会这样。
谢谢
更新部分
虽然上面的代码我必须使用clone 关键字。根据下面的答案,我们正在使用clone 创建对象的副本而不是引用。在这种情况下,这似乎不是一个正当理由。考虑以下示例,它不需要 clone 关键字并且按预期工作
<?php
$filesystem = new FilesystemIterator('common/images');
foreach ($filesystem as $file)
{
$files[] = $file;
}
echo $files[0]->getFileName();
【问题讨论】: