Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
--TEST--
2
Function -- clone
3
--SKIPIF--
4
<?php if (version_compare(phpversion(), '5.0') !== -1) { echo 'skip'; } ?>
5
--FILE--
6
<?php
7
require_once 'PHP/Compat.php';
8
PHP_Compat::loadFunction('clone');
9
 
10
// Test classes
11
class testclass
12
{
13
    var $foo = 'foo';
14
}
15
 
16
class testclass2
17
{
18
    var $foo = 'foo';
19
 
20
    function __clone()
21
    {
22
        $this->foo = 'bar';
23
    }
24
}
25
 
26
class testclass3
27
{
28
    var $bar;
29
}
30
 
31
class testclass4
32
{
33
    var $foo;
34
    function __clone()
35
    {
36
        $this->foo = clone($this->foo);
37
    }
38
}
39
 
40
// Test 1: Initial value
41
$aa = new testclass;
42
echo $aa->foo, "\n"; // foo
43
 
44
// Test 2: Not referenced
45
$bb = clone($aa);
46
$bb->foo = 'baz';
47
echo $aa->foo, "\n"; // foo
48
 
49
// Test 3: __clone method
50
$cc = new testclass2;
51
echo $cc->foo, "\n"; // foo
52
$dd = clone($cc);
53
echo $dd->foo, "\n"; // bar
54
 
55
// Test 4: Bug #3649
56
$a = new testclass3;
57
$a->foo =& new testclass4;
58
$a->foo->bar = 'hello';
59
$aclone = clone($a);
60
$aclone->b->bar = 'goodbye';
61
echo $a->foo->bar, "\n";
62
 
63
?>
64
--EXPECT--
65
foo
66
foo
67
foo
68
bar
69
hello