PHP面向对象04_串行化

简介:


oop04复习

2014-9-3 10:48:45

要点:
--1、克隆对象
--2、__toString( )
--3、 __call( )
--4、自动加载类
--5、对象串行化

 

1、克隆对象以及__clone()方法

概述:对象属于引用类型,普通的"="号属于引用赋值

有时可能需要根据一个对象完全克隆出一个一模一样的对象,而且克隆以后,两个对象互不干扰。

格式:

$obj = new Class();
$obj2 = clone $obj;

   但是,当要克隆的对象中有子对象或资源时,克隆会不完整
魔术方法:__clone()
当执行clone克隆时会自动调用的方法,主要用于解决对象中特殊属性的复制操作。

2、__toString( )

概述:当试图直接echo对象时,会报错。我们可以在类中加上这个方法,会在echo时自动调用

示例:
 public function __toString(){
     echo "这是一个类.";
 }

 

3、 __call( )

概述:当试图访问对象中不存在的方法时,会报错。我们可以在类中加上这个方法来处理这种情况

格式:

mixed __call( string $name , array $arguments )
第一个参数 namearguments表示调用时的参数列表(数组类型)

示例:
public function __call($name,$args){
   echo "您调用的方法{$name}不存在!参数列表:";
   var_dump($args);
}

 

4、自动加载类(__autoload())

该方法位于类之外.
当new一个新对象时,程序会试图调用该方法自动包含所需要的文件

示例:

function __autoload($classname){
    $name=$classname.".class.php";
    if(file_exists($name)){
        require($name);
        echo "**自动加载了<font color='red'>".$name."</font>类<br>";
    }else{
        die("<font color='red'>".$name."</font>类不存在!");
    }
}

 

5、对象串行化
对象也是一种在内存中存储的数据类型,他的寿命通常随着生成该对象的程序终止而终止.
有时候可能需要将对象的状态保存下来,需要时再将对象恢复.
**串行化(serialize):对象通过写出描述自己状态的数值来记录自己,这个过程称对象的串行化
串行化返回一个包含字节流的字符串.
以下两种情况需要将对象串行化:
01)对象需要在网络中传输时,将对象串行化成二进制串即可.
02)对象需要持久保存时,将对象串行化后写入文件或数据库.

**反串行化(unserialize):能够重新把字符串变回php原来的对象值

Note:串行化一个对象将会保存对象的所有属性变量和类名信息,但是不会保存对象的方法.
所以,反串行化时需导入原先对象的方法.

***** ***** *****

[**]对象串行化中的魔术方法__sleep( )和 __wakeup( )

__sleep(): 是执行串行化时自动调用的方法,目的是实现资源类型属性的关闭释放等操作

Note:sleep方法需要返回一个数组,其中数组中的值是串行化时要保留的属性名

__wakeup():是在执行反串行化时自动调用的方法,目的是实现资源属性的打开(sleep方法关闭的资源),即再次初始化.


【示例】

 public function __sleep(){
     //此串行化要保留四个属性
     return array('server', 'username', 'password', 'db');
 }

 

【完整示例】

<?php
//声明一个Person类,包含三个成员属性和一个成员方法
class Person {        
    public $name = "zhangsan";         //人的名字
    public $sex = "man";           //人的性别
    public $age = 20;              //人的年龄
    public function say() {          //这个人可以说话的方法, 说出自己的成员属性       
        echo "我的名字:".$this->name.",性别:".$this->sex.",年龄:".$this->age."<br>";
    }
}
$person = new Person();     //能过Person类创建一个对象,对象的引用名为$person
$person_string = serialize($person);  //通过serialize函数将对象串行化,返回一个字符串
file_put_contents("file.txt", $person_string);  //将对象串行化后的字符串保存到file.txt文件中

//将file.txt文件中的字符串读出来并赋给变量$person_string
$person_string = file_get_contents("file.txt"); 
$person = unserialize($person_string);  //进行反串行化操作,形成对象$person。
$person -> say();        //调用对象中的say()方法,用来测试反串行化对象是否成功

目录
相关文章
PHP编程中的面向对象和面向过程
【8月更文挑战第28天】在PHP编程中,我们可以选择面向对象或面向过程的编程方式。面向对象的编程方式更符合人类习惯,易于理解,提高程序的重用性,减少代码出错率;而面向过程的编程方式则强调的是功能行为,以具体的功能实现为主。
|
设计模式 数据库连接 PHP
PHP编程中的面向对象与设计模式
在PHP编程世界中,掌握面向对象编程(OOP)和设计模式是提升代码质量和开发效率的关键。本文将深入浅出地介绍如何在PHP中应用OOP原则和设计模式,以及这些实践如何影响项目架构和维护性。通过实际案例,我们将探索如何利用这些概念来构建更健壮、可扩展的应用程序。
|
设计模式 测试技术 PHP
使用PHP进行面向对象网站开发的最佳实践
【8月更文第10天】PHP 是一种广泛使用的开源服务器端脚本语言,特别适合于 Web 开发并可嵌入 HTML 中。随着 PHP 5.x 和 7.x 版本的发展,它已经完全支持面向对象编程(OOP)。面向对象的设计模式和原则可以帮助开发者构建更加模块化、可扩展且易于维护的应用程序。
96 6
|
11月前
|
存储 PHP
09 PHP高级面向对象,大多数人不了解的东西!
路老师分享了PHP语言的高级应用,包括final关键字、抽象类、接口使用、对象类型检测及魔术方法等。通过实例详细讲解了PHP面向对象编程的核心概念和技术要点,帮助读者深入理解和掌握PHP。
75 3
|
11月前
|
Java PHP 开发者
08 PHP面向对象的高级操作
路老师分享PHP语言知识,帮助大家入门并深入了解PHP。内容涵盖构造方法、析构方法、继承、多态、`$this-&gt;`与`::`操作符的使用,以及数据隐藏等核心概念。通过详细示例,讲解如何在实际开发中运用这些技术。适合初学者和进阶开发者学习。
86 2
|
11月前
|
PHP
07 PHP的面向对象你真的了解吗?
路老师分享PHP语言知识,帮助大家入门并深入了解PHP。本文介绍了面向对象编程的基础概念,包括类、对象、封装性、继承性和多态性,以及类的定义、方法、实例化和成员变量等内容。下篇将讲解构造函数、析构函数及PHP对象的高级应用。
103 2
|
Java PHP 数据安全/隐私保护
PHP 面向对象,构造函数,析构函数,继承,方法的重写,接口抽象类,static,final,this,parent,self的异同和作用
本文详细介绍了PHP面向对象编程的一系列核心概念和用法,包括构造函数、析构函数、继承、方法重写、访问控制、接口、抽象类、静态成员、final关键字、以及this、self、parent这三个关键字的异同和作用。通过具体示例代码,展示了如何在PHP中使用这些面向对象的特性,以及它们在实际开发中的应用。
PHP 面向对象,构造函数,析构函数,继承,方法的重写,接口抽象类,static,final,this,parent,self的异同和作用
|
12月前
|
PHP 开发者
PHP编程中的面向对象基础
【9月更文挑战第36天】在PHP的世界中,面向对象编程(OOP)是一块基石。它不仅为代码带来了结构、可维护性与重用性,还让复杂的问题变得简单化。通过掌握类与对象、继承与多态等核心概念,开发者可以构建出更加强大和灵活的应用。本文将引导你理解这些概念,并通过实例展示如何在PHP中应用它们,让你轻松驾驭OOP的力量。
|
PHP 开发者
PHP编程中的面向对象基础与实践
【9月更文挑战第27天】在PHP的海洋里,面向对象编程(OOP)是一艘强大的船,它不仅能让代码组织得更加优雅,还能提高开发效率。本文将带你领略OOP的魅力,从基础概念到实际应用,让你轻松驾驭这艘船,开启高效编程之旅。
|
数据库连接 PHP 开发者
PHP编程中面向对象与面向过程的比较
【9月更文挑战第19天】本文旨在探讨PHP编程语言中的两种主要编程范式:面向对象编程(OOP)和面向过程编程。我们将通过对比这两种方法的特点、使用场景及其优缺点,帮助读者更好地理解在PHP开发中如何选择合适的编程模式。文章还将提供一些实际代码示例,以便更直观地展示两种编程方式的差异。