php 用序列化或session物件讓oo進行到底

2022-04-08 04:06:18 字數 1899 閱讀 5095

php:用序列化或session物件讓oo進行到底

php支援物件導向程式設計,這使得我們在程式設計時可以盡可能使用類及物件來簡化

我們的程式,減少**維護的工作量.

可是由於變數到指令碼執行完畢就釋放,我們本頁所生成的物件想在其它頁面使用時

便碰到了麻煩.可是,在很多情況下,有些任務在一兩個頁面是無法完成的.如果能夠

將物件及其方法傳遞到我們想使用物件的頁面,那豈不是個很好的主意.

雖然用get 或post的hide方法傳遞物件變數然後在新頁面建立一新的物件,再然後

用建構函式來初始化新物件,好像也行的通,可是......,很麻煩,想必大家能想像得到吧.

經過長時間的嘗試,現總結兩種方法來傳遞物件.

一種,序列化(php4才具有的功能),利用這個功能我們可以將物件序列化,然後在我們需要

的頁面將物件變數反序列化來使用.

舉例如下:

//*********class.php 定義類*********

class a

function give_var_value()

}function show_var_value()}}

?>

//**************a.php 建立物件並序列化**************

require_once("class.php");

$a=new a("hello,","world!");

$s = serialize($a); //序列化物件a

$fp = fopen("store", "w");//以"w"方式開啟一檔案並獲得檔案控制代碼,請在此注意目錄屬性.

fputs($fp, $s);//寫入檔案

fclose($fp);//關閉檔案控制代碼

?>

//**************b.php 反序列化物件並呼叫其方法**************

require_once("class.php");//由於序列化物件不能序列化其方法,所以必須require class.php檔案

$s = implode("", @file("store"));

$a = unserialize($s);

$a->show_var_value();

?>

以上例子在win2k server apache2.0.36 php4.2.1除錯通過

序列化只能用於有限使用者的情況下,因為需要為每個使用者建立檔案,要主意目錄的許可權,而且保證檔名不能重複.在使用者不能正常退出

瀏覽器的情況下,不能保證檔案被刪除.所以這種方法用在後台管理時比較方便.

當使用者數量很多時,我們可以用session來儲存物件.因為session檔案是由系統來管理的,所以我們不必為檔案的建立,

刪除,目錄許可權等問題而傷腦筋.示例如下:

//*******************a1.php 將物件註冊為session變數****************

require_once("class.php");

session_start();

$_session["a"]=new a("hello,","world!");

?>

//*******************b1.php 使用session變數****************

require_once("class.php");//同樣,註冊物件為session變數時並不能儲存其方法,所以必須require class.php檔案

session_start();

$_session["a"]->show_var_value();

?>

以上例子在win98se apache2.0.36 php4.2.1除錯通過

序列化檔案:

o:1:"a":3:}

session檔案:

a|o:1:"a":3:}

PHP序列化 序列化

將物件序列號 當需要將物件長久儲存時或用於網路傳輸等.將物件序列號成字串儲存 class demo 魔術方式,當物件序列號時自動呼叫,此時會序列號陣列中的屬性.如果沒有該方法,則序列號所有屬性 function sleep 當物件返序列化時自動呼叫,此時會初始化返序列化後物件中該方法中的屬性 fun...

php序列化與反序列化

php的序列化 反序列化對與一些大檔案的壓縮操作,讀寫操作十分有用。乙個簡單的序列化案例 同時用到了序列化與反序列化函式,二者在被呼叫時會分別自己呼叫對應的函式,sleep 以及 wakeup.sleep和 wakeup練習題 故事 乙個果農生產了很多水果種類,於是需要把乙個買家指定的種類寄給他,生...

php序列化和反序列化

把複雜的資料型別壓縮到乙個字串中 serialize 把變數和它們的值編碼成文字形式 unserialize 恢復原先變數 1.建立乙個 arr陣列用於儲存使用者基本資訊,並在瀏覽器中輸出檢視結果 arr array arr name 張三 arr age 22 arr 男 arr phone 12...