There a typo in the recursive delete function, ironically with the call to isLink (incorrectly written as isSymlink).
The example function fails rather noisily if the directory to be deleted does not exist, so you might want to include a test for existence first.
DirectoryIterator::isLink
(PHP 5 <= 5.1.1)
DirectoryIterator::isLink — Determine if current DirectoryIterator item is a symbolic link
Description
public bool DirectoryIterator::isLink
( void
)
Determines if the current DirectoryIterator item is a symbolic link.
Parameters
This function has no parameters.
Return Values
Returns TRUE if the item is a symbolic link, otherwise FALSE
Examples
Example #1 A DirectoryIterator::isLink example
This example contains a recursive function for removing a directory tree.
<?php
/**
* This function will recursively delete all files in the given path, without
* following symlinks.
*
* @param string $path Path to the directory to remove.
*/
function removeDir($path) {
$dir = new DirectoryIterator($path);
foreach ($dir as $fileinfo) {
if ($fileinfo->isFile() || $fileinfo->isSymlink()) {
unlink($fileinfo->getPathName());
} elseif (!$fileinfo->isDot() && $fileinfo->isDir()) {
removeDir($fileinfo->getPathName());
}
}
rmdir($path);
}
removeDir('foo');
?>
See Also
- DirectoryIterator::getType - Determine the type of the current DirectoryIterator item
- DirectoryIterator::isDir - Determine if current DirectoryIterator item is a directory
- DirectoryIterator::isDot - Determine if current DirectoryIterator item is '.' or '..'
- DirectoryIterator::isFile - Determine if current DirectoryIterator item is a regular file
DirectoryIterator::isLink
Rob Pomeroy
20-Nov-2009 05:16
20-Nov-2009 05:16
