php面向对象引用文件,PHP面向对象之对象和引用
在PHP中對象類型和簡單變量類型表現可以說是大相徑庭,很多數據類型都要可以在寫時進行復制,如當寫代碼$a=$b時,兩個變量因為賦予相同的值而告終。所以需要注意的是,這種情況用在對象時就會完全不同了。
我們來看看下面的代碼,你期望輸出什么值呢?
01<?php
02class?Person{
03
04public?$name="張三";
05public??function?say(){
06echo?"我叫".$this->name?."
"?;
07}
08}
09$Person=new?Person();
10$Person->name="李四";
11$Person1=$Person;
12$Person1->?name="王五"?;
13$Person->say();
14$Person1->say();
上面的程序出輸:
我叫王五
我叫王五
我們來看一下為什么會得出這樣的結果。當將$Person賦值給$Person1時,并沒有復制$Person的內容。相反,PHP使用了另一種方式將$Person1指向同一個對象。這種方式就是PHP的對象引用。PHP 的對象的引用接近指針,它儲存著該對象的一個“標識符”(類似地址),傳遞對象時是在拷貝這個標識符,而不是內容。
要想知道對象$Person和$Person1是否擁有相同的類和屬性,可以通過使用“==”操作符來比較這兩個對象。代碼如下(承接上面的代碼):
1if($Person?==$Person1){
2echo?"Person和Person1具有相同的類和屬性"?;
3}else{
4return?false;
5}
程序輸出:Person和Person1具有相同的類和屬性
要想知道對象$Person和$Person1是否擁有相同的類和屬性,并且存儲在相同的位置,可以通過使用“===”操作符來比較這兩個對象。代碼如下:
1if?($Person?===$Person1){
2echo?"Person和Person1具有相同的類和屬性且存儲在相同的位置"?;
3}else{
4return?false?;
5}
程序輸出:Person和Person1具有相同的類和屬性且存儲在相同的位置
最后,如果我們希望把對象$Person的內容復制給$Person1,可以使用克隆,如$Person1=clone $Person
原文:http://www.cnblogs.com/zhouguowei/p/5179069.html
總結
以上是生活随笔為你收集整理的php面向对象引用文件,PHP面向对象之对象和引用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle中row_number()、
- 下一篇: vue用阿里云oss上传图片使用分片上传