亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
首頁 > php教程 > php手冊 > 正文

前端學PHP之面向對象系列第五篇對象操作

php中文網
發(fā)布: 2016-11-16 10:24:02
原創(chuàng)
1496人瀏覽過
×
目錄
[1]對象克隆 [2]對象比較[3]對象串行化[4]json

前面的話

  本文主要介紹面向對象中的一些對象操作

?

立即學習PHP免費學習筆記(深入)”;

對象克隆

  對象復制,又叫對象克隆,可以通過 clone 關鍵字來完成

  在多數情況下,我們并不需要完全復制一個對象來獲得其中屬性。但有一個情況下確實需要:如果你有一個窗口對象,該對象持有窗口相關的資源。你可能會想復制一個新的窗口,保持所有屬性與原來的窗口相同,但必須是一個新的對象(因為如果不是新的對象,那么一個窗口中的改變就會影響到另一個窗口)。還有一種情況:如果對象 A 中保存著對象 B 的引用,當你復制對象A時,你想其中使用的對象不再是對象 B 而是 B 的一個副本,那么你必須得到對象 A 的一個副本

<?<span style="color: #000000;">php
    </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Person{
        </span><span style="color: #0000ff;">private</span> <span style="color: #800080;">$name</span><span style="color: #000000;">;
        </span><span style="color: #0000ff;">private</span> <span style="color: #800080;">$sex</span><span style="color: #000000;">;
        </span><span style="color: #0000ff;">private</span> <span style="color: #800080;">$age</span><span style="color: #000000;">;
        </span><span style="color: #0000ff;">function</span> __construct(<span style="color: #800080;">$name</span>="",<span style="color: #800080;">$sex</span>="",<span style="color: #800080;">$age</span>=1<span style="color: #000000;">){
            </span><span style="color: #800080;">$this</span>->name= <span style="color: #800080;">$name</span><span style="color: #000000;">;
            </span><span style="color: #800080;">$this</span>->sex = <span style="color: #800080;">$sex</span><span style="color: #000000;">;
            </span><span style="color: #800080;">$this</span>->age = <span style="color: #800080;">$age</span><span style="color: #000000;">;
        }
        </span><span style="color: #0000ff;">function</span><span style="color: #000000;"> say(){
            </span><span style="color: #0000ff;">echo</span> "我的名字:" .<span style="color: #800080;">$this</span>->name.",性別:".<span style="color: #800080;">$this</span>->sex.",年齡:".<span style="color: #800080;">$this</span>->age."<br>"<span style="color: #000000;">;
        }
    }
    </span><span style="color: #800080;">$p1</span> = <span style="color: #0000ff;">new</span> Person('張三','男','20'<span style="color: #000000;">);
    </span><span style="color: #800080;">$p2</span> = <span style="color: #0000ff;">clone</span> <span style="color: #800080;">$p1</span><span style="color: #000000;">;
    </span><span style="color: #800080;">$p1</span>->say();<span style="color: #008000;">//</span><span style="color: #008000;">我的名字:張三,性別:男,年齡:20</span>
    <span style="color: #800080;">$p2</span>->say();<span style="color: #008000;">//</span><span style="color: #008000;">我的名字:張三,性別:男,年齡:20</span>
?>
登錄后復制

?

立即學習PHP免費學習筆記(深入)”;

對象比較

  當使用比較運算符(==)比較兩個對象變量時,比較的原則是:如果兩個對象的屬性和屬性值都相等,而且兩個對象是同一個類的實例,那么這兩個對象變量相等

  而如果使用全等運算符(===),這兩個對象變量一定要指向某個類的同一個實例(即同一個對象)

<?<span style="color: #000000;">php
</span><span style="color: #0000ff;">function</span> bool2str(<span style="color: #800080;">$bool</span><span style="color: #000000;">)
{
    </span><span style="color: #0000ff;">if</span> (<span style="color: #800080;">$bool</span> === <span style="color: #0000ff;">false</span><span style="color: #000000;">) {
        </span><span style="color: #0000ff;">return</span> 'FALSE'<span style="color: #000000;">;
    } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> {
        </span><span style="color: #0000ff;">return</span> 'TRUE'<span style="color: #000000;">;
    }
}
</span><span style="color: #0000ff;">function</span> compareObjects(&<span style="color: #800080;">$o1</span>, &<span style="color: #800080;">$o2</span><span style="color: #000000;">)
{
    </span><span style="color: #0000ff;">echo</span> 'o1 == o2 : ' . bool2str(<span style="color: #800080;">$o1</span> == <span style="color: #800080;">$o2</span>) . "\n"<span style="color: #000000;">;
    </span><span style="color: #0000ff;">echo</span> 'o1 != o2 : ' . bool2str(<span style="color: #800080;">$o1</span> != <span style="color: #800080;">$o2</span>) . "\n"<span style="color: #000000;">;
    </span><span style="color: #0000ff;">echo</span> 'o1 === o2 : ' . bool2str(<span style="color: #800080;">$o1</span> === <span style="color: #800080;">$o2</span>) . "\n"<span style="color: #000000;">;
    </span><span style="color: #0000ff;">echo</span> 'o1 !== o2 : ' . bool2str(<span style="color: #800080;">$o1</span> !== <span style="color: #800080;">$o2</span>) . "\n"<span style="color: #000000;">;
}
</span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Flag
{
    </span><span style="color: #0000ff;">public</span> <span style="color: #800080;">$flag</span><span style="color: #000000;">;
    </span><span style="color: #0000ff;">function</span> Flag(<span style="color: #800080;">$flag</span> = <span style="color: #0000ff;">true</span><span style="color: #000000;">) {
        </span><span style="color: #800080;">$this</span>->flag = <span style="color: #800080;">$flag</span><span style="color: #000000;">;
    }
}
</span><span style="color: #0000ff;">class</span><span style="color: #000000;"> OtherFlag
{
    </span><span style="color: #0000ff;">public</span> <span style="color: #800080;">$flag</span><span style="color: #000000;">;
    </span><span style="color: #0000ff;">function</span> OtherFlag(<span style="color: #800080;">$flag</span> = <span style="color: #0000ff;">true</span><span style="color: #000000;">) {
        </span><span style="color: #800080;">$this</span>->flag = <span style="color: #800080;">$flag</span><span style="color: #000000;">;
    }
}

</span><span style="color: #800080;">$o</span> = <span style="color: #0000ff;">new</span><span style="color: #000000;"> Flag();
</span><span style="color: #800080;">$p</span> = <span style="color: #0000ff;">new</span><span style="color: #000000;"> Flag();
</span><span style="color: #800080;">$q</span> = <span style="color: #800080;">$o</span><span style="color: #000000;">;
</span><span style="color: #800080;">$r</span> = <span style="color: #0000ff;">new</span><span style="color: #000000;"> OtherFlag();
</span><span style="color: #008000;">/*</span><span style="color: #008000;">
Two instances of the same class
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : FALSE
o1 !== o2 : TRUE
 </span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">echo</span> "Two instances of the same class\n"<span style="color: #000000;">;
compareObjects(</span><span style="color: #800080;">$o</span>, <span style="color: #800080;">$p</span><span style="color: #000000;">);
</span><span style="color: #008000;">/*</span><span style="color: #008000;">
Two references to the same instance
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : TRUE
o1 !== o2 : FALSE
 </span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">echo</span> "\nTwo references to the same instance\n"<span style="color: #000000;">;
compareObjects(</span><span style="color: #800080;">$o</span>, <span style="color: #800080;">$q</span><span style="color: #000000;">);
</span><span style="color: #008000;">/*</span><span style="color: #008000;">
Instances of two different classes
o1 == o2 : FALSE
o1 != o2 : TRUE
o1 === o2 : FALSE
o1 !== o2 : TRUE
 </span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">echo</span> "\nInstances of two different classes\n"<span style="color: #000000;">;
compareObjects(</span><span style="color: #800080;">$o</span>, <span style="color: #800080;">$r</span><span style="color: #000000;">);
</span>?>
登錄后復制

?

立即學習PHP免費學習筆記(深入)”;

對象串行化

  對象是一種在內存中存儲的數據類型,它的壽命通常隨著生成該對象的程序終止而終止。有時候可能需要將對象的狀態(tài)保存下來,需要時再將對象恢復。對象通過寫出描述自己狀態(tài)的數值來記錄自己,這個過程稱對象的串行化(Serialization)。以下兩種情況需要將對象串行化:1、對象需要在網絡中傳輸時,將對象串行化成二進制串即可;2、對象需要持久保存時,將對象串行化后寫入文件或數據庫

serialize()

  serialize() -- 串行化,返回一個包含字節(jié)流的字符串

北極象沉浸式AI翻譯
北極象沉浸式AI翻譯

免費的北極象沉浸式AI翻譯 - 帶您走進沉浸式AI的雙語對照體驗

北極象沉浸式AI翻譯0
查看詳情 北極象沉浸式AI翻譯

unserialize()

  unserialize() -- 反串行化,能夠重新把字符串變回php原來的對象值

  串行化一個對象將會保存對象的所有屬性變量和類名信息,但是不會保存對象的方法

<?<span style="color: #000000;">php
</span><span style="color: #008000;">//</span><span style="color: #008000;"> classa.inc:</span>
  <span style="color: #0000ff;">class</span><span style="color: #000000;"> A {
      </span><span style="color: #0000ff;">public</span> <span style="color: #800080;">$one</span> = 1<span style="color: #000000;">;
      </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> show_one() {
          </span><span style="color: #0000ff;">echo</span> <span style="color: #800080;">$this</span>-><span style="color: #000000;">one;
      }
  }
  
</span><span style="color: #008000;">//</span><span style="color: #008000;"> page1.php:</span>
  <span style="color: #0000ff;">include</span>("classa.inc"<span style="color: #000000;">);
  </span><span style="color: #800080;">$a</span> = <span style="color: #0000ff;">new</span><span style="color: #000000;"> A;
  </span><span style="color: #800080;">$s</span> = <span style="color: #008080;">serialize</span>(<span style="color: #800080;">$a</span><span style="color: #000000;">);
  </span><span style="color: #008000;">//</span><span style="color: #008000;"> 把變量$s保存起來以便文件page2.php能夠讀到</span>
  <span style="color: #008080;">file_put_contents</span>('store', <span style="color: #800080;">$s</span><span style="color: #000000;">);

</span><span style="color: #008000;">//</span><span style="color: #008000;"> page2.php:</span>
  <span style="color: #0000ff;">include</span>("classa.inc"<span style="color: #000000;">);
  </span><span style="color: #800080;">$s</span> = <span style="color: #008080;">file_get_contents</span>('store'<span style="color: #000000;">);
  </span><span style="color: #800080;">$a</span> = <span style="color: #008080;">unserialize</span>(<span style="color: #800080;">$s</span><span style="color: #000000;">);
  </span><span style="color: #008000;">//</span><span style="color: #008000;"> 現在可以使用對象$a里面的函數 show_one()</span>
  <span style="color: #800080;">$a</span>-><span style="color: #000000;">show_one();
</span>?>
登錄后復制

?

立即學習PHP免費學習筆記(深入)”;

json

json_encode

<span style="color: #0000ff;">string</span> json_encode ( <span style="color: #0000ff;">mixed</span> <span style="color: #800080;">$value</span> [, int <span style="color: #800080;">$options</span> = 0 [, int <span style="color: #800080;">$depth</span> = 512 ]] )
登錄后復制

  json_encode()方法對變量進行 JSON 編碼

<?<span style="color: #000000;">php
</span><span style="color: #800080;">$arr</span> = <span style="color: #0000ff;">array</span> ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5<span style="color: #000000;">);
</span><span style="color: #0000ff;">echo</span> json_encode(<span style="color: #800080;">$arr</span>);<span style="color: #008000;">//</span><span style="color: #008000;">{"a":1,"b":2,"c":3,"d":4,"e":5}</span>
?>
登錄后復制

json_decode

<span style="color: #0000ff;">mixed</span> json_decode ( <span style="color: #0000ff;">string</span> <span style="color: #800080;">$json</span> [, bool <span style="color: #800080;">$assoc</span> = <span style="color: #0000ff;">false</span> [, int <span style="color: #800080;">$depth</span> = 512 [, int <span style="color: #800080;">$options</span> = 0 ]]] )
登錄后復制

  json_decode()方法對 JSON 格式的字符串進行解碼,接受一個 JSON 編碼的字符串并且把它轉換為 PHP 變量,當assoc參數為 TRUE 時,將返回 array 而非 object

<?<span style="color: #000000;">php
</span><span style="color: #800080;">$json</span> = '{"a":1,"b":2,"c":3,"d":4,"e":5}'<span style="color: #000000;">;
</span><span style="color: #008000;">/*</span><span style="color: #008000;">
object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}
 </span><span style="color: #008000;">*/</span>
<span style="color: #008080;">var_dump</span>(json_decode(<span style="color: #800080;">$json</span><span style="color: #000000;">));

</span><span style="color: #008000;">/*</span><span style="color: #008000;">
array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}
 </span><span style="color: #008000;">*/</span>
<span style="color: #008080;">var_dump</span>(json_decode(<span style="color: #800080;">$json</span>, <span style="color: #0000ff;">true</span><span style="color: #000000;">));
</span>?>
登錄后復制
PHP速學教程(入門到精通)
PHP速學教程(入門到精通)

PHP怎么學習?PHP怎么入門?PHP在哪學?PHP怎么學才快?不用擔心,這里為大家提供了PHP速學教程(入門到精通),有需要的小伙伴保存下載就能學習啦!

下載
來源:php中文網
本文內容由網友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現有涉嫌抄襲侵權的內容,請聯系admin@php.cn
最新問題
開源免費商場系統廣告
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關于我們 免責申明 意見反饋 講師合作 廣告合作 最新更新
php中文網:公益在線php培訓,幫助PHP學習者快速成長!
關注服務號 技術交流群
PHP中文網訂閱號
每天精選資源文章推送
PHP中文網APP
隨時隨地碎片化學習
PHP中文網抖音號
發(fā)現有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號