xref: /PHP-8.3/ext/spl/tests/bug66405.phpt (revision c6357b80)
1--TEST--
2SPL: RecursiveDirectoryIterator with CURRENT_AS_PATHNAME flag
3--CREDITS--
4Paul Garvin pgarvin76@gmail.com
5--FILE--
6<?php
7$td = __DIR__ . '/bug66405';
8mkdir($td);
9touch($td . '/file1.txt');
10touch($td . '/file2.md');
11mkdir($td . '/testsubdir');
12touch($td . '/testsubdir/file3.csv');
13
14class Bug66405 extends RecursiveDirectoryIterator
15{
16    public function current(): string|SplFileInfo|FilesystemIterator
17    {
18        $current = parent::current();
19        echo gettype($current) . " $current\n";
20        return $current;
21    }
22
23    public function getChildren(): RecursiveDirectoryIterator
24    {
25        $children = parent::getChildren();
26        if (is_object($children)) {
27            echo get_class($children) . " $children\n";
28        } else {
29            echo gettype($children) . " $children\n";
30        }
31        return $children;
32    }
33}
34
35$rdi = new Bug66405($td, FilesystemIterator::CURRENT_AS_PATHNAME | FilesystemIterator::SKIP_DOTS);
36$rii = new RecursiveIteratorIterator($rdi);
37
38ob_start();
39foreach ($rii as $file) {
40    //noop
41}
42$results = explode("\n", ob_get_clean());
43sort($results);
44echo implode("\n", $results);
45?>
46--CLEAN--
47<?php
48$td = __DIR__ . '/bug66405';
49unlink($td . '/testsubdir/file3.csv');
50unlink($td . '/file2.md');
51unlink($td . '/file1.txt');
52rmdir($td . '/testsubdir');
53rmdir($td);
54?>
55--EXPECTF--
56Bug66405 file3.csv
57string %sbug66405%efile1.txt
58string %sbug66405%efile2.md
59string %sbug66405%etestsubdir%efile3.csv
60