通过const引用传递对象?

时间:2012-07-06 18:59:26

标签: php oop const pass-by-reference pass-by-value

在C ++中,如果希望函数能够从对象读取而不是修改它,则可以向函数传递const引用。在php中执行此操作的等效方法是什么?

我知道php5中的对象默认是通过引用传递的,但为了便于阅读,我想我会继续在变量名之前使用&符号,如下所示:

function foo(&$obj)
{

}

1 个答案:

答案 0 :(得分:3)

如果你想传递一个对象而不是通过引用,你可以预先clone该对象。

<?php
function changeObject($obj) {
  $obj->name = 'Mike';
}

$obj = new StdClass;
$obj->name = 'John';

changeObject(clone $obj);
echo $obj->name; // John

changeObject($obj);
echo $obj->name; // Mike
  

我知道php5中的对象默认是通过引用传递的,但为了便于阅读,我想我会继续在变量名之前使用&符号

这是你的电话,但我发现只会让它更像C ++。或者,您可以通过在函数定义中使用类型提示来显示正在传入对象:

function foo(StdClass $obj)
{

}

一旦明确$obj是一个对象,就可以假定它是通过引用传递的。