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

PHP面向对象之对象和引用

WBOY
Freigeben: 2016-06-07 17:23:25
Original
1348 Leute haben es durchsucht

在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();
Nach dem Login kopieren

上面的程序出输:

我叫王五

我叫王五


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

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

if($Person == $Person1){
       echo "Person和Person1具有相同的类和属性" ;
}else{
       return false;
}
Nach dem Login kopieren

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

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

if ($Person === $Person1){
       echo "Person和Person1具有相同的类和属性且存储在相同的位置" ;
} else{
       return false ;
}
Nach dem Login kopieren

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

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




Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage