PHP Session中儲存Object

來源:互聯網
上載者:User
在PHP中,使用Session儲存Object時,PHP會將Object自動序列化。在讀取Session變數時,準確地說是在session_start時,PHP會將Session中已序列化的Object還原序列化。這時就需要Class的定義,Why?因為序列化時只是儲存了Object的屬性值。如果Object包含方法,在還原序列化時就需要Class定義來還原方法。

通常PHP.ini中可以開啟session_auto_start,這樣當PHP指令碼開始執行時,就會自動將Session中的Object還原序列化。但是這個時候我們不會把所有的類定義檔案都包含進來。關閉session_auto_start吧,主意不錯,把類定義檔案全部包含進來之後再調用session_start()函數,問題好像解決了。

等等,每次請求都會使用session中的所有變數嗎?不一定吧?那麼為什麼要把所有類定義檔案包含進來呢?要是有100個類定義檔案,那不慢死。有沒有按需包含類定義檔案的方法呢?有!那就是PHP5的__autoload函數。簡單地,在PHP指令碼的開頭定義:

    function __autoload($className){    include_once $className . '.php';}

這樣在new某個clas而當前的指令碼未包含這個class的定義時,PHP就會尋找__autoload這個function,這時你恰好定義了__autoload,PHP就會調用這個函數了。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.