请教引用的问题

请教引用的问题

这两天一直在这个网站里学习,学到了不少知识,非常感谢phpfans!

提出我的问题:

一个有关引用的问题:

1。比较普遍的引用方式
如下

[复制到剪切板]
CODE:
<?php

        
function doubler(&$value){
                
$value $value<<1;
        }
        
        
$a 3;
        
doubler($a);
        echo 
$a;
?> ;


执行上面代码,我们会得到结果6,因为是引用;

2。关于对象的引用

首先定义了两个类,一个是form类,一个property类

[复制到剪切板]
CODE:
<?php
class Form{
        
        private 
$property;
        
        public function 
__construct(& $property){
                
$this->property $property;
        }
        
        public function 
get_property(){
                return 
$this->property;
        }
        
        public function 
set_property($property){
                
$this->property $property;
        }
}

class 
Property{
        public 
$name;
        public 
$age;
        
        public function 
__construct(){
                
$this->name 'wang';
                
$this->age 24;
        }
        
        public function 
get_name(){
                return 
$this->name;
        } 
        public function 
set_name($name){
                
$this->name $name;
        }
}
?>

测试代码
<?php

$pro 
= new Property();

$form = new Form($pro);

$ok $form->get_property()->get_name();
$form->get_property()->set_name('turing');
echo 
$ok;
var_dump($pro);
?> ;


通过生成一个property对象,并将其作为参数传递给form类,此时并不属于引用调用,$pro传递给$form对象时只是按值传递,可是为何程序作后的显示结果能够作用于$pro对象呢?

请教phpfans的高手们!

[ 本帖最后由 turingwang 于 2007-12-18 14:20 编辑 ]

难道函数的引用参数传递规则不适合于对象之间的参数传递吗?
或者说函数的变量作用域规则不适合于对象的作用域?

[ 本帖最后由 turingwang 于 2007-12-17 15:27 编辑 ]

真诚期待高手的解答,感谢……

查找了不少资料,才知道自己问了个比较弱#的问题

原来对象一旦创建就会通过引用传递,因此上面说的情况才会发生。如果想要得到一个对象的拷贝,则需要使用

[复制到剪切板]
CODE:
clone ;

关键字