7.7.9 對(duì)象串行化(序列化)1

7.7.9 對(duì)象串行化(序列化)1

對(duì)象也是一種在內(nèi)存中存儲(chǔ)的數(shù)據(jù)類型济欢,他的壽命通常隨著生成該對(duì)象的程序終止而終止责鳍。有時(shí)候可能需要將對(duì)象的狀態(tài)保存下來残家,需要時(shí)再將對(duì)象恢復(fù)挡鞍。對(duì)象通過寫出描述自己狀態(tài)的數(shù)值來記錄自己骑歹,這個(gè)過程稱對(duì)象的串行化(Serialization)。以下兩種情況需要將對(duì)象串行化:
對(duì)象需要在網(wǎng)絡(luò)中傳輸時(shí)墨微,將對(duì)象串行化成二進(jìn)制串即可道媚。
對(duì)象需要持久保存時(shí),將對(duì)象串行化后寫入文件或數(shù)據(jù)庫(kù)翘县。
串行化和反串行化函數(shù):
serialize() -- 串行化最域,返回一個(gè)包含字節(jié)流的字符串
unserialize() -- 反串行化,能夠重新把字符串變回php原來的對(duì)象值锈麸。
串行化一個(gè)對(duì)象將會(huì)保存對(duì)象的所有屬性變量和類名信息镀脂,但是不會(huì)保存對(duì)象的方法。

objstr.txt

O:6:"Person":4:{s:4:"name";s:6:"張三";s:3:"age";i:10;s:3:"sex";s:3:"男";s:4:"marr";a:5:{i:0;s:3:"aaa";i:1;s:3:"bbb";i:2;s:3:"ccc";i:3;s:3:"ddd";i:4;s:3:"www";}}

read.php

<?php
    include "test.php";

    
    //讀出字符串從文件中
    $str = file_get_contents("objstr.txt");

    //返串行化
    $p = unserialize($str);


    $p->say();

test.php

<?php
/*  
 *  魔術(shù)方法忘伞, 只有PHP語(yǔ)言中存在
 *
 *
 *   __construct()
 *
 *   __destruct()
 *
 *   __set()
 *
 *   __get()
 *
 *   __isset()
 *
 *   __unset()
 *
 *   1. 自動(dòng)調(diào)用, 但不同的魔術(shù)方法薄翅,有自己的調(diào)時(shí)機(jī)
 *   2. 都是以"__"開始的方法
 *   3. 所有的魔術(shù)方法,方法名都是固定的
 *   4. 如果不寫氓奈, 就不存在翘魄, 也就沒有默認(rèn)的功能
 *
 *  
 *
 *  __toString() 
 *
 *      1. 是在直接使用 echo print printf輸出一個(gè)對(duì)象引用時(shí),自動(dòng)調(diào)用這個(gè)方法
 *      2. 將對(duì)象的基本信息放在__toString()方法內(nèi)部舀奶, 形成自字符串返回暑竟。
 *      3. __toString()方法中, 不能有參數(shù)育勺, 而且必須返回一個(gè)字符串
 *
 *
 *  克隆對(duì)象
 *      1. 使用clone這個(gè)關(guān)鍵 復(fù)制了一個(gè)對(duì)象  
 *
 *
 *      __clone()魔術(shù)方法
 *
 *      1. 是在克隆對(duì)象時(shí)但荤,自動(dòng)調(diào)用的方法
 *      2. 作用:和構(gòu)造方法一樣, 是對(duì)新克隆的對(duì)象進(jìn)行初使化
 *      3. 在這個(gè)方法中$this代表的是副本, 所以就可以給所有副本的成員初使化
 *
 *   __call()
 *
 *      1. 就是在調(diào)用一個(gè)對(duì)象中不存的方法時(shí)涧至,自動(dòng)調(diào)用的方法
 *      2. 有兩個(gè)參數(shù)纱兑, 第一個(gè)參數(shù)是, 調(diào)用的不存的方法的方法名化借, 第二個(gè)參數(shù)是潜慎,調(diào)用這個(gè)不存的方法的方法參數(shù)
 *      3. 作用:可以寫提示,但這個(gè)不是主要的功能蓖康。 將方法的功能相似铐炫, 但方法名還要不同的, 就可以采用這個(gè)方式來完成
 *
 *  串行化(序列化)
 *
 *      1. 將對(duì)象轉(zhuǎn)成字符串(不用看懂) ---  串行化
 *      2. 將字符串轉(zhuǎn)回對(duì)象           --- 返串行化
 *
 *
 *      注意(串行化的時(shí)機(jī)):
 *
 *      1. 將對(duì)象在網(wǎng)絡(luò)中傳輸
 *      2. 將對(duì)象持久保存 
 *
 *      
 *      
 *
 */ 

    class Person {
        public $name;
        public $age;
        public $sex;    

        public $marr = array("aaa", "bbb", "ccc", "ddd", "www");

        function __construct($name, $age, $sex) {
            $this->name = $name;
            $this->age = $age;
            $this->sex = $sex;
        }

        function say() {
            echo "我的名子是:{$this->name}蒜焊,我的年齡是:{$this->age}倒信,我的性別是:{$this->sex}。<br>";
        }

        function __toString() {
            return "aaaaaaaaaaaaaaaaaaa<br>";
        }

        function __destruct() {
            echo "{$this->name} ###########<br>";
        }

        function __clone() {
            $this->name="克隆的";
            $this->age=0;
        }

        function __call($method, $args) {
            if(in_array($method, $this->marr)) {
                echo $args[0]."<br>";   
            }else{
                echo "你調(diào)用的方法{$method}()不存在!<br>";
            }
        }
/*
        function aaa($a) {
            echo $a;
        }

        function bbb($b) {
            echo $b;
        }

        function ccc($c) {
            echo $c;
        }

        function ddd($d) {
            echo $d;
        }
 */     
    }

write.php

<?php
    include "test.php";

    //對(duì)象
    $p = new Person("張三", 10, "男");

    //將對(duì)象串行化
    $str = serialize($p);

    //將字符串保存在文件夾objstr.txt中
    file_put_contents("objstr.txt", $str);

    echo "對(duì)象轉(zhuǎn)完字符串泳梆, 保存到文件中成功!";
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鳖悠,一起剝皮案震驚了整個(gè)濱河市榜掌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌乘综,老刑警劉巖憎账,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異卡辰,居然都是意外死亡胞皱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門九妈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來反砌,“玉大人,你說我怎么就攤上這事萌朱⊙缡鳎” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵晶疼,是天一觀的道長(zhǎng)森渐。 經(jīng)常有香客問我,道長(zhǎng)冒晰,這世上最難降的妖魔是什么同衣? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮壶运,結(jié)果婚禮上耐齐,老公的妹妹穿的比我還像新娘。我一直安慰自己蒋情,他們只是感情好埠况,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著棵癣,像睡著了一般辕翰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上狈谊,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天喜命,我揣著相機(jī)與錄音,去河邊找鬼河劝。 笑死壁榕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赎瞎。 我是一名探鬼主播牌里,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼务甥!你這毒婦竟也來了牡辽?” 一聲冷哼從身側(cè)響起喳篇,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎态辛,沒想到半個(gè)月后麸澜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡因妙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了票髓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片攀涵。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖洽沟,靈堂內(nèi)的尸體忽然破棺而出以故,到底是詐尸還是另有隱情,我是刑警寧澤裆操,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布怒详,位于F島的核電站,受9級(jí)特大地震影響踪区,放射性物質(zhì)發(fā)生泄漏昆烁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一缎岗、第九天 我趴在偏房一處隱蔽的房頂上張望静尼。 院中可真熱鬧,春花似錦传泊、人聲如沸鼠渺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拦盹。三九已至,卻和暖如春溪椎,著一層夾襖步出監(jiān)牢的瞬間普舆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工校读, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奔害,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓地熄,卻偏偏與公主長(zhǎng)得像华临,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子端考,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 7.7.10 對(duì)象串行化(序列化)2 對(duì)象也是一種在內(nèi)存中存儲(chǔ)的數(shù)據(jù)類型雅潭,他的壽命通常隨著生成該對(duì)象的程序終止而終...
    曹淵說創(chuàng)業(yè)閱讀 416評(píng)論 0 0
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 10,970評(píng)論 6 13
  • 第5章 引用類型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,234評(píng)論 0 4
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理揭厚,服務(wù)發(fā)現(xiàn),斷路器扶供,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • 張麗麗 筛圆,株洲人,當(dāng)年朋友推薦她購(gòu)買百度的原始股2萬(wàn)股椿浓,她覺得很好太援,但又拿不定主意,就去問了她的同學(xué):株洲工商銀行...
    古墓道人閱讀 493評(píng)論 0 0