1--TEST--
2SPL: SplFileInfo cloning
3--FILE--
4<?php
5
6function test($name, $lc, $lp)
7{
8    static $i = 0;
9    echo "===$i===\n";
10    $i++;
11
12    $o = new SplFileInfo($name);
13
14    var_dump($o);
15    $c = clone $o;
16    var_dump($c);
17    var_dump($o === $c);
18    var_dump($o == $c);
19    var_dump($o->getPathname() == $c->getPathname());
20
21    try {
22        $f = new SplFileObject($name);
23        var_dump($name);
24        var_dump($f->getPathName());
25        $l = substr($f->getPathName(), -1);
26        var_dump($l != '/' && $l != '\\' && $l == $lc);
27        var_dump($f->getFileName());
28        $l = substr($f->getFileName(), -1);
29        var_dump($l != '/' && $l != '\\' && $l == $lc);
30        var_dump($f->getPath());
31        $l = substr($f->getPath(), -1);
32        var_dump($l != '/' && $l != '\\' && $l == $lp);
33    } catch (LogicException $e) {
34        echo "LogicException: ".$e->getMessage()."\n";
35    }
36    try {
37        $fo = $o->openFile();
38        var_dump($fo->getPathName(), $fo->getFileName(), $fo->getPath());
39    } catch (LogicException $e) {
40        echo "LogicException: ".$e->getMessage()."\n";
41    }
42}
43
44test(__DIR__ . '/' . 'fileobject_001a.txt', 't', substr(__DIR__,-1));
45test(__DIR__ . '/', substr(__DIR__,-1), 'l');
46test(__DIR__,       substr(__DIR__,-1), 'l');
47
48?>
49--EXPECTF--
50===0===
51object(SplFileInfo)#%d (2) {
52  ["pathName":"SplFileInfo":private]=>
53  string(%d) "%s"
54  ["fileName":"SplFileInfo":private]=>
55  string(%d) "fileobject_001a.txt"
56}
57object(SplFileInfo)#%d (2) {
58  ["pathName":"SplFileInfo":private]=>
59  string(%d) "%s"
60  ["fileName":"SplFileInfo":private]=>
61  string(%d) "fileobject_001a.txt"
62}
63bool(false)
64bool(true)
65bool(true)
66%s(%d) "%sfileobject_001a.txt"
67string(%d) "%sfileobject_001a.txt"
68bool(true)
69string(19) "fileobject_001a.txt"
70bool(true)
71string(%d) "%stests%eSplFileObject"
72bool(true)
73string(%d) "%sfileobject_001a.txt"
74string(19) "fileobject_001a.txt"
75string(%d) "%stests%eSplFileObject"
76===1===
77object(SplFileInfo)#%d (2) {
78  ["pathName":"SplFileInfo":private]=>
79  string(%d) "%s"
80  ["fileName":"SplFileInfo":private]=>
81  string(%d) "%s"
82}
83object(SplFileInfo)#%d (2) {
84  ["pathName":"SplFileInfo":private]=>
85  string(%d) "%s"
86  ["fileName":"SplFileInfo":private]=>
87  string(%d) "%s"
88}
89bool(false)
90bool(true)
91bool(true)
92LogicException: Cannot use SplFileObject with directories
93LogicException: Cannot use SplFileObject with directories
94===2===
95object(SplFileInfo)#%d (2) {
96  ["pathName":"SplFileInfo":private]=>
97  string(%d) "%s"
98  ["fileName":"SplFileInfo":private]=>
99  string(%d) "%s"
100}
101object(SplFileInfo)#%d (2) {
102  ["pathName":"SplFileInfo":private]=>
103  string(%d) "%s"
104  ["fileName":"SplFileInfo":private]=>
105  string(%d) "%s"
106}
107bool(false)
108bool(true)
109bool(true)
110LogicException: Cannot use SplFileObject with directories
111LogicException: Cannot use SplFileObject with directories
112