首页 > php教程 > PHP开发 > PHP面向对象之对象和引用

PHP面向对象之对象和引用

WBOY
发布: 2016-06-07 17:23:25
原创
1348 人浏览过

在PHP中对象类型和简单变量类型表现可以说是大相径庭,很多数据类型都要可以在写时进行复制,如当写代码$a=$b时,两个变量因为赋予相同的值而告终。所以需要注意的是,这种情况用在对象时就会完全不同了。


我们来看看下面的代码,你期望输出什么值呢?

<?php
class Person{
                                                                                                                                                     
          public $name="张三";       
          public  function say(){
               echo "我叫". $this->name ."<br>" ;  
          }          
}
$Person=new Person();
$Person->name="李四";
$Person1=$Person;
$Person1-> name="王五" ;
$Person->say();
$Person1->say();
登录后复制

上面的程序出输:

        我叫王五

        我叫王五


我们来看一下为什么会得出这样的结果。当将$Person赋值给$Person1时,并没有复制$Person的内容。相反,PHP使用了另一种方式将$Person1指向同一个对象。这种方式就是PHP的对象引用。PHP 的对象的引用接近指针,它储存着该对象的一个“标识符”(类似地址),传递对象时是在拷贝这个标识符,而不是内容。

要想知道对象$Person和$Person1是否拥有相同的类和属性,可以通过使用“==”操作符来比较这两个对象。代码如下(承接上面的代码):

if($Person == $Person1){
       echo "Person和Person1具有相同的类和属性" ;
}else{
       return false;
}
登录后复制

程序输出:Person和Person1具有相同的类和属性

要想知道对象$Person和$Person1是否拥有相同的类和属性,并且存储在相同的位置,可以通过使用“===”操作符来比较这两个对象。代码如下:

if ($Person === $Person1){
       echo "Person和Person1具有相同的类和属性且存储在相同的位置" ;
} else{
       return false ;
}
登录后复制

程序输出:Person和Person1具有相同的类和属性且存储在相同的位置

最后,如果我们希望把对象$Person的内容复制给$Person1,可以使用克隆,如$Person1=clone $Person




相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板