如果类的参数中有引用,newInstanceArgs 函数无法调用类的构造函数,因此请谨慎传递参数。
<?php
类 Foo {
函数 __construct (&$arr) {
$this->arr = &$arr;
}
函数 createInstance () {
$reflectionClass = new ReflectionClass("Bar");
返回 $reflectionClass->newInstanceArgs(数组($this, $this->arr));
}
函数 mod($key, $val) {
$this->arr[$key] = $val;
}
}
类 Bar {
函数 __construct (&$foo, &$arr) {
$this->foo = &$foo;
$this->arr = &$arr;
}
函数 mod($key, $val) {
$this->arr[$key] = $val;
}
}
$arr = 数组();
$foo = new Foo($arr);
$arr["x"] = 1;
$foo->mod("y", 2);
$bar = $foo->createInstance();
$bar->mod("z", 3);
echo "<pre>";
print_r($arr);
print_r($foo);
print_r($bar);
echo "</pre>";
?>