87 lines
2.1 KiB
PHP
87 lines
2.1 KiB
PHP
<?php
|
|
/**
|
|
* Copyright 2010-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License").
|
|
* You may not use this file except in compliance with the License.
|
|
* A copy of the License is located at
|
|
*
|
|
* http://aws.amazon.com/apache2.0
|
|
*
|
|
* or in the "license" file accompanying this file. This file is distributed
|
|
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
|
|
* express or implied. See the License for the specific language governing
|
|
* permissions and limitations under the License.
|
|
*/
|
|
|
|
namespace Aws\S3\Iterator;
|
|
|
|
/**
|
|
* Provides an iterator around an opendir resource. This is useful when you need to provide context to an opendir so
|
|
* you can't use RecursiveDirectoryIterator
|
|
*/
|
|
class OpendirIterator implements \Iterator
|
|
{
|
|
/** @var resource */
|
|
protected $dirHandle;
|
|
|
|
/** @var \SplFileInfo */
|
|
protected $currentFile;
|
|
|
|
/** @var int */
|
|
protected $key = -1;
|
|
|
|
/** @var string */
|
|
protected $filePrefix;
|
|
|
|
/**
|
|
* @param resource $dirHandle Opened directory handled returned from opendir
|
|
* @param string $filePrefix Prefix to add to each filename
|
|
*/
|
|
public function __construct($dirHandle, $filePrefix = '')
|
|
{
|
|
$this->filePrefix = $filePrefix;
|
|
$this->dirHandle = $dirHandle;
|
|
$this->next();
|
|
}
|
|
|
|
public function __destruct()
|
|
{
|
|
if ($this->dirHandle) {
|
|
closedir($this->dirHandle);
|
|
}
|
|
}
|
|
|
|
public function rewind()
|
|
{
|
|
$this->key = 0;
|
|
rewinddir($this->dirHandle);
|
|
}
|
|
|
|
public function current()
|
|
{
|
|
return $this->currentFile;
|
|
}
|
|
|
|
public function next()
|
|
{
|
|
if ($file = readdir($this->dirHandle)) {
|
|
$this->currentFile = new \SplFileInfo($this->filePrefix . $file);
|
|
} else {
|
|
$this->currentFile = false;
|
|
}
|
|
|
|
$this->key++;
|
|
}
|
|
|
|
public function key()
|
|
{
|
|
return $this->key;
|
|
}
|
|
|
|
public function valid()
|
|
{
|
|
return $this->currentFile !== false;
|
|
}
|
|
}
|