Rumah pembangunan bahagian belakang tutorial php php中对象的序列化与反序列化

php中对象的序列化与反序列化

Jun 28, 2018 pm 03:38 PM

 * 一、对象的序列化

 * 1.php中的任何值都可以序列化为包含字节流表示的字符串来表示

 * 2.序列化对象可以保存到变量或者文件中,方便保存和传送

//数值序列化

$num = 500;
echo serialize($num),&#39;<br>&#39;;
Salin selepas log masuk

//字符串序列化

$name = &#39;peter&#39;;
echo serialize($name),&#39;<br>&#39;;
Salin selepas log masuk

//数组序列化

$course = [&#39;php&#39;,&#39;mysql&#39;,&#39;thinkphp&#39;];
echo serialize($course),&#39;<br>&#39;;
Salin selepas log masuk

//布尔序列化

$isPass = true;
echo serialize($isPass),&#39;<br>&#39;;
Salin selepas log masuk

//对象序列化:以一个数据库连接类为例

class Db
{
    //连接参数与返回值
    public $db = null;
    public $host;
    private $user;
    private $pass;
    //构造方法
    public function __construct($host=&#39;localhost&#39;,$user=&#39;root&#39;,$pass=&#39;root&#39;)
    {
        //类属性初始化
        $this->host = $host;
        $this->user = $user;
        $this->pass = $pass;
        
        //创建对象时自动连接数据库
        $this->connect();
    }
    
    //连接数据库的方法
    private function connect()
    {
        $this->db = mysqli_connect($this->host,$this->user, $this->pass);
    }
    
    //serialize($obj)序列化的时候,会自动调用__sleep(void)
    //主要用于对象休眠时的一些清理工作,例如指定哪些属性允许进入到休眠对象的属性序列中
    public function __sleep()
    {
        //返回由属性名字符串组成的索引数组,指示序列化时要保存的字段名
        return [&#39;host&#39;,&#39;user&#39;,&#39;pass&#39;];
        //对于本案例来说,如果连接参数不变的情况下,只要将$this->db保存到对象序列中即可
//        return [&#39;db&#39;];
    }
    
    //unserialize()反序列化的时候,会自动调用__wakeup(void)
    //主要用于唤醒对象时要做的初始化工作,例如本例中的:自动连接数据库
    public function __wakeup()
    {
        $this->connect();
    }
    
}
$obj = new Db();
Salin selepas log masuk

* 对象序列化的特点:

* 1.只保存对象中的属性,不保存方法

* 2.只保存类名,不保存对象名

echo serialize($obj);
Salin selepas log masuk

//为了演示反序列化,我们将序列化的对象保存到一个变量中,当然也可以保存到文件中

$tmp1 = serialize($obj);
Salin selepas log masuk

//查看序列化后的变量内容,与之前序列化内容是一样的

echo $tmp1;
Salin selepas log masuk

//现在进行反序列化操作,将保存到变量中的对象取出来

$tmp2 = unserialize($tmp1);
Salin selepas log masuk

//检测$tmp2是否是一个对象

echo &#39;<hr>&#39;;
echo is_object($tmp2) ? &#39;对象&#39; : &#39;不是&#39;;
echo &#39;<hr>&#39;;
Salin selepas log masuk

//获取属性,查看数据库连接对象

var_dump($tmp2->db);
Salin selepas log masuk


Atas ialah kandungan terperinci php中对象的序列化与反序列化. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Mana yang lebih cepat, operasi objek php atau operasi tatasusunan? Mana yang lebih cepat, operasi objek php atau operasi tatasusunan? Jul 12, 2023 pm 03:04 PM

Operasi tatasusunan PHP adalah lebih pantas daripada operasi objek PHP Sebabnya ialah: 1. Operasi objek melibatkan langkah-langkah seperti mencipta objek, kaedah memanggil dan mengakses sifat, yang mungkin lebih perlahan dalam prestasi 2. Operasi tatasusunan adalah jenis pembolehubah khas. Boleh memegang berbilang nilai, menggunakan kaedah dan fungsi yang berbeza pada tatasusunan, dan melaksanakan operasi yang pantas dan cekap pada tatasusunan.

Bagaimana untuk menukar tatasusunan php kepada objek dalam gelung Bagaimana untuk menukar tatasusunan php kepada objek dalam gelung Aug 10, 2023 pm 02:44 PM

Terdapat dua cara untuk menukar tatasusunan PHP kepada objek dalam gelung: 1. Gunakan penukaran jenis paksa untuk menukar tatasusunan kepada objek, dan kunci tatasusunan mestilah nama atribut objek yang sah 2. Cipta objek baharu dan tambahkan elemen tatasusunan Disalin ke dalam objek, bebas daripada sama ada kunci tatasusunan adalah sah sebagai nama harta objek.

Apakah siri dalam PHP dan apakah risiko keselamatan yang berpotensi? Apakah siri dalam PHP dan apakah risiko keselamatan yang berpotensi? Apr 02, 2025 pm 05:45 PM

Serialization dalam PHP adalah proses menukarkan objek atau struktur data ke dalam rentetan, yang kebanyakannya dilaksanakan melalui fungsi bersiri () dan uncerialize (). Serialization digunakan untuk menyelamatkan keadaan objek untuk penghantaran antara permintaan atau sistem yang berbeza. Risiko keselamatan yang berpotensi termasuk serangan suntikan objek dan kebocoran maklumat. Mengelakkan kaedah termasuk: 1. Hadkan kelas deserialized dan gunakan parameter kedua fungsi unserialialize (); 2. Sahkan sumber data untuk memastikan ia datang dari sumber yang dipercayai; 3. Pertimbangkan menggunakan format data yang lebih selamat seperti JSON.

Apakah perbezaan antara objek php dan tatasusunan Apakah perbezaan antara objek php dan tatasusunan Aug 24, 2023 pm 05:02 PM

Perbezaan antara objek PHP dan tatasusunan ialah: 1. Objek adalah jenis data komposit, manakala tatasusunan adalah jenis data mudah 2. Sifat dan kaedah objek boleh diakses melalui contoh objek, manakala elemen daripada tatasusunan boleh diakses melalui indeks 3. Objek ialah entiti yang merangkumkan sifat dan kaedah, manakala tatasusunan ialah himpunan tersusun bagi elemen 4. Objek dihantar melalui rujukan dalam PHP, manakala tatasusunan dihantar mengikut nilai; PHP; 5. Objek sesuai untuk menerangkan entiti dengan keadaan dan tingkah laku, manakala tatasusunan sesuai untuk menyimpan dan memproses sejumlah besar data yang serupa.

Adakah php arrays objek? Adakah php arrays objek? Jul 22, 2022 pm 05:24 PM

Tatasusunan PHP bukan objek. Dalam PHP, tatasusunan dan objek ialah dua jenis data yang berbeza Tatasusunan ialah koleksi data tersusun dan objek ialah hasil instantiasi kelas, yang mengandungi bukan sahaja sifat tetapi juga kaedah. Objek boleh merangkum operasi pada data, tetapi tatasusunan tidak boleh.

Cara menggunakan pembolehubah objek dalam PHP Cara menggunakan pembolehubah objek dalam PHP Sep 13, 2023 pm 12:59 PM

Cara menggunakan pembolehubah objek dalam PHP memerlukan contoh kod khusus Dalam PHP, menggunakan pembolehubah objek menjadikannya lebih mudah untuk mengurus dan memanipulasi objek. Pembolehubah objek ialah jenis data yang menyimpan contoh objek Objek boleh dimanipulasi dengan memanggil kaedah kelas dan mengakses sifat kelas. Berikut akan memperkenalkan secara terperinci cara menggunakan pembolehubah objek dalam PHP dan memberikan contoh kod yang sepadan. Mencipta objek Dalam PHP, anda boleh menggunakan kata kunci baharu untuk mencipta objek. Contohnya adalah seperti berikut: classCar{public$colo

Bagaimana untuk mendapatkan semua kaedah dalam objek dalam php Bagaimana untuk mendapatkan semua kaedah dalam objek dalam php Mar 23, 2023 am 11:12 AM

Dalam PHP, adalah sangat mudah untuk mendapatkan semua kaedah dalam objek, yang boleh dicapai dengan menggunakan kelas ReflectionClass dalam perpustakaan standard PHP. Kelas ReflectionClass menyediakan kaedah untuk mencerminkan semua maklumat kelas dalam PHP, termasuk nama kelas, atribut, kaedah, dll. Di bawah ini kami memperkenalkan secara terperinci cara menggunakan kelas ReflectionClass untuk mendapatkan semua kaedah dalam objek.

Terokai cara memanggil kaedah objek dalam PHP Terokai cara memanggil kaedah objek dalam PHP Mar 28, 2023 pm 03:00 PM

PHP adalah bahasa pengaturcaraan yang sangat popular yang boleh digunakan untuk membangunkan pelbagai aplikasi, terutamanya aplikasi web. Dalam PHP, pengaturcaraan berorientasikan objek adalah salah satu ciri pentingnya. Artikel ini akan meneroka cara memanggil kaedah objek dalam PHP.

See all articles