我有一个关于传递对象作为参数的问题.当我们传递一个变量时,它会创建一个副本,但看起来像对象总是一个引用指针,这是正确的吗?我已使用以下示例代码进行了测试:
class Base
{
private $var;
function set ($var)
{
$this->var = $var;
}
function show ()
{
echo $this->var, '
';
}
}
class Car
{
private $obj;
function __construct($obj)
{
$this->obj = $obj;
}
function set ($var)
{
$this->obj->set($var);
}
function show()
{
$this->obj->show();
}
}
class Bus
{
private $obj;
function __construct($obj)
{
$this->obj = $obj;
}
function set ($var)
{
$this->obj->set($var);
}
function show()
{
$this->obj->show();
}
}
并通过运行
$base = new Base();
$base->set('one');
$base->show(); // one
$bus = new Bus($base);
$bus->show(); // one
$car = new Car($base);
$car->set('two');
$car->show(); // two
$base->show(); // two
$bus->show(); // two
显示结果为:
one
one
two
two
two
因此,即使将参数作为参数传递给函数或其他类,也可以在任何地方更改Base类的变量,这会影响所有这些变量,这是否意味着它总是指向同一个对象作为指针?
谢谢.