What are some best practices for excluding specific files and directories during a copy operation in PHP?
When copying files and directories in PHP, it may be necessary to exclude specific files or directories from the operation. One way to achieve this is by using the `RecursiveDirectoryIterator` and `RecursiveIteratorIterator` classes to iterate over the files and directories, and then applying a filter to exclude the ones that match certain criteria.
$source = '/path/to/source';
$destination = '/path/to/destination';
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::SELF_FIRST
);
foreach ($iterator as $item) {
if ($item->isDir() && in_array($item->getFilename(), ['exclude_dir1', 'exclude_dir2'])) {
continue;
}
if ($item->isFile() && in_array($item->getFilename(), ['exclude_file1.txt', 'exclude_file2.txt'])) {
continue;
}
$target = $destination . DIRECTORY_SEPARATOR . $iterator->getSubPathname();
if ($item->isDir()) {
mkdir($target);
} else {
copy($item, $target);
}
}