Add tests of __clone
This commit is contained in:
Родитель
85596ae453
Коммит
70190711e7
|
@ -0,0 +1,20 @@
|
|||
<?php
|
||||
namespace classes\clone_001;
|
||||
|
||||
class A {
|
||||
var $p;
|
||||
|
||||
public function __construct(&$var) {
|
||||
$this->p =& $var;
|
||||
}
|
||||
}
|
||||
|
||||
function test() {
|
||||
$var = 42;
|
||||
$a = new A($var);
|
||||
$b = clone $a;
|
||||
$var = 24;
|
||||
echo $b->p;
|
||||
}
|
||||
|
||||
test();
|
|
@ -73,6 +73,23 @@ class A {
|
|||
$this->p =& $p;
|
||||
$this->foo5($p);
|
||||
}
|
||||
|
||||
// Modification in __clone
|
||||
|
||||
public function __clone() {
|
||||
$this->p = 666;
|
||||
}
|
||||
|
||||
private function foo6($p) {
|
||||
$that = clone $this;
|
||||
echo $p;
|
||||
}
|
||||
|
||||
public function test6() {
|
||||
$p = 42;
|
||||
$this->p =& $p;
|
||||
$this->foo6($p);
|
||||
}
|
||||
}
|
||||
|
||||
(new A)->test1();
|
||||
|
@ -84,3 +101,5 @@ echo "\n";
|
|||
(new A)->test4();
|
||||
echo "\n";
|
||||
(new A)->test5();
|
||||
echo "\n";
|
||||
(new A)->test6();
|
||||
|
|
Загрузка…
Ссылка в новой задаче