前言:因为之前在工作中用到SPHINX,在实例化对象的时候,其他地方会用几次这个对象。
在函数传递过程中,上一个查询对象的上下文环境会传递到当前的上下文环境,所以我们采取clone来创建新的对象,互不影响。
$cl = new SphinxClient();
$cl2 = $cl;
dump($cl);
dump($cl2);
//输出结果,等号复制对象的时候是相当于引用,共享一个内存地址
#object(SphinxClient)[11]
#object(SphinxClient)[11]
$cl3 = clone $cl;
dump($cl);
dump($cl3);
//输出结果,clone复制对象的时候是创建新的内存,来存放新的对象,2个单独互不相关的对象
#object(SphinxClient)[11]
#object(SphinxClient)[18]
test1($cl);
function test1($o)
{
dump($o);
}
//输出结果,函数传递参数的时候,对象是默认传引用的,共享一个内存地址
#object(SphinxClient)[11]
exit();