source: branches/version-2_5-dev/data/module/Compat/tests/function/clone.phpt @ 19792

Revision 19792, 1.0 KB checked in by Seasoft, 13 years ago (diff)

#744(PHP4 互換用途ソースを将来的に切り捨てやすい仕組みづくり)

Line 
1--TEST--
2Function -- clone
3--SKIPIF--
4<?php if (version_compare(phpversion(), '5.0') !== -1) { echo 'skip'; } ?>
5--FILE--
6<?php
7require_once 'PHP/Compat.php';
8PHP_Compat::loadFunction('clone');
9
10// Test classes
11class testclass
12{
13    var $foo = 'foo';
14}
15
16class testclass2
17{
18    var $foo = 'foo';
19
20    function __clone()   
21    {
22        $this->foo = 'bar';
23    }
24}
25
26class testclass3
27{
28    var $bar;
29}
30
31class 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;
42echo $aa->foo, "\n"; // foo
43
44// Test 2: Not referenced
45$bb = clone($aa);
46$bb->foo = 'baz';
47echo $aa->foo, "\n"; // foo
48
49// Test 3: __clone method
50$cc = new testclass2;
51echo $cc->foo, "\n"; // foo
52$dd = clone($cc);
53echo $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';
61echo $a->foo->bar, "\n";
62
63?>
64--EXPECT--
65foo
66foo
67foo
68bar
69hello
Note: See TracBrowser for help on using the repository browser.