php 面向对象详解_对象的串行化和反串行化

 更新时间:2016年11月25日 15:14  点击:1381
serialize

 

第七章(11)面向对象详解_对象的串行化和反串行化
串行化就是把对象转化成二进制的字符串 (要串行化的对象名称).
反串行化就是把二进制化字化为对象 unserilize(要反串行化的对象名称).
符串转串行化标准:
$r1=new Ren("张三",20,"男");
$str=($r1<要串行化的对象>);
$file=fopen("tmp.txt"<串行化保存到的文件地址>,"w"<写>);
fwrite($file,$str);
fclose($file);
反串行化标准:
include"ren.php"<将串行化对象的php移入反串行化的php中>;
$file=fopen("tmp.txt"<要反串行化的文件地址>,"r"<读>);
$str=fread($file,filesize("tmp.txt"<读的长度,填文件地址就是文件有好长就读好长>));
fclose($file);
$r=unserilize($str);
$r->shuohua();
在什么情况下将对象串行化:
1.对象在网络中传输的时候.
2.将对象存入文件或数据库的时候.
__sleep(){$arr=array(要串行化的属性);return $arr;}串行化部分属性时自动调用的方法.
__wakeup()反串行化时自动调用的方法<可以将串行化的属性在反串行化时初始值>.
     第七章(12)面向对象详解_抽象方法和抽象类
抽象方法:在类里面没有方法体的方法就是抽象方法.
abstract<抽象方法关键字> function 方法名();.
抽象类:抽象类不能实例化对象的,此类就是抽象类,抽象类不能实例化 对象,就要在此类前面加 abstract来修饰.
抽象类的用途:就相当于一个规范,如果要抽象类里面的原有的功能实现就必须以抽象类作为父类做一个子类,然后覆盖完整抽象类里面的抽象方法,才能使抽象类里面的功能一一实现.

interface 接口名称{所有的属性都必须是常量,所有的方法都必须是抽象的,所有的成员都必须是公有的} 接口的作用:是一个规范.

 第七章(13)面向对象详解_接口的声明与使用
interface 接口名称{所有的属性都必须是常量,所有的方法都必须是抽象的,所有的成员都必须是公有的}
接口的作用:是一个规范.
实现接口时使用implements<继承接口的关键字>.
可以使用抽象类去实现一个接口的部分方法.
使用类去实现接口中的全部方法.
接口的使用实例:
interface<声明接口的关键字> Ren1
{
 const XINGMING="张三";
 function shuohua1();
 function shuohua2();
}
interface Ren2 extends<接口继承接口可以使用继承关键字> Ren1
{
 function shuohua3();
 function shuohua4();
}
interface Ren3{function shuohua5();}
interface Ren4{function shuohua6();}
class Ren5{function shuohua7(){echo "7777<br>";}}
class Ren extends Ren5 implemenrs<继承接口的关键字,必须先继承类再继承接口,可以同时继承多个接口> Ren2,Ren3,Ren4
{
 function shuohua1(){echo "1111<br>";}
 function shuohua2(){echo "2222<br>";}
 function shuohua3(){echo "3333<br>";}
 function shuohua4(){echo "4444<br>";}
 function shuohua5(){echo "5555<br>";}
 function shuohua6(){echo "6666<br>";}
<完整所有继承过来的抽象方法>
}
$r=new Ren(); echo Ren::XINGMING."<br>";
$r->shuohua1();  $r->shuohua2();  $r->shuohua3();  $r->shuohua4();  $r->shuohua5();  $r->shuohua6();  $r->shuohua7();
实例输出结果:
张三    1111    2222    3333    4444    5555    6666    7777

php 面向对象详解_常用的自动调用的方法,我们会用到_autoload,__clone(),__tostring() 三个函数的教程。

第七章(10)面向对象详解_常用的自动调用的方法
__tostring() 是直接输入对象时自动调用的方法.
<如果想在直接输入对象时得到什么结果,可以将想要得到结果的代码写在__tostrimg()里面>
__clone() 对新克隆出来的副本进行属性初始化时自动调用的方法.<如果一个对象想做成两个对象,而不是一个对象有两个名称时,可以使用__clone()的方法,此时在__clone()里面的$this代表副本本身,$that代表原本本身,在书写时不能直接写成 原本对象名称=副本对象名称,这仅代表一个对象有两个名称,应写成 原本对象名称=clone副本对象名称,这样才是真正两个同样的对象,副本的__clone()里面还可以加上其它的输出>
__call(里面要有两个参数,调用不存在的方法名称传给第一个参数,不存在的列表传给第二个参数) 调用不存在对象方法时自动调用的方法.
__autoload(调用其它php中类的名称传给此参数) 调用其它php里面的类到本php中产生对象时自动调用的方法.<__autoload()并不是写在本对象内部的,而是在对象外部使用的方法>

来看看php 面向对象详解_构造方法与析构方法吧,我们经常有关于构造方法与析构函数的实例教程喽。

第七章(4)面向对象详解_构造方法与析构方法
特殊的引用$this的使用
实例说明:
class Ren
{
 var $xingming;
 var $nianling;
 var $xingbie;
 function shuohua()
 {echo "我的姓名是:".$this->xingming.",我的年龄是:".$this->nianling.",我的性别是:".$this->xingbie."<br>";}
 function zoulu()
 {echo "我在走路<br>";}
 function chifan()
 {echo "我在吃饭<br>";}
}
$r1=new Ren();    $r2=new Ren();    $r3=new Ren();
$r1->xingming="张三";    $r2->xingming="李四";    $r3->xingming="王五";
$r1->nianling=90;    $r2->nianling=23;    $r3->nianling=41;
$r1->xingbie="男";    $r2->xingbie="女";    $r3->xingbie="男";
//人1.2.3各自说出自己的姓名.年龄.性别:
$r1->shuohua();    $r2->shuohua();    $r3->shuohua();
输出结果:
我的姓名是:张三,我的年龄是:90,我的性别是:男
我的姓名是:李四,我的年龄是:23,我的性别是:女
我的姓名是:王五,我的年龄是:41,我的性别是:男
$this的作用:代表对象的一个属性,相当于第一人称"我"的概念.
构造方法的特点:名称与类相同,对象一产生的时候自动调用,去初始化成员属性.
实例说明:(此实例是在php4里面的声明方法)
class Ren
{
 var $xingming;
 var $nianling;
 var $xingbie;
 function Ren($xingming,$nianling,$xingbie)
 {
  $this->xingming=$xingming;
  $this->nianling=$nianling;
  $this->xingbie=$xingbie;
 }
 function shuohua()
 {echo "我的姓名是:".$this->xingming.",我的年龄是:".$this->nianling.",我的性别是:".$this->xingbie."<br>";}
 function zoulu()
 {echo "我在走路<br>";}
 function chifan()
 {echo "我在吃饭<br>";}
}
$r1=new Ren("张三",90,"男");
$r2=new Ren("李四",23,"女");
$r3=new Ren("王五",41,"男");
$r1->shuohua();    $r2->shuohua();    $r3->shuohua();
此例如上例输出结果完全相同.
在php5版本中的构造方法是function__construct(),不用写类名,作用相同.
析构方法__destruct()在程序结束前释放要释放的东西的方法.
实例说明:
class Ren
{
 var $xingming;
 var $nianling;
 var $xingbie;
 function __construct($xingming,$nianling,$xingbie)
 {
  $this->xingming=$xingming;
  $this->nianling=$nianling;
  $this->xingbie=$xingbie;
 }
 function shuohua()
 {echo "我的姓名是:".$this->xingming.",我的年龄是:".$this->nianling.",我的性别是:".$this->xingbie."<br>";}
 function zoulu()
 {echo "我在走路<br>";}
 function chifan()
 {echo "我在吃饭<br>";}
 function __destruct()
 {echo $this->xingming."再见<br>";}
}
$r1=new Ren("张三",90,"男");
$r2=new Ren("李四",23,"女");
$r3=new Ren("王五",41,"男");
$r1->shuohua();    $r2->shuohua();    $r3->shuohua();
输出结果:
我的姓名是:张三,我的年龄是:90,我的性别是:男
我的姓名是:李四,我的年龄是:23,我的性别是:女
我的姓名是:王五,我的年龄是:41,我的性别是:男
王五再见    李四再见    张三再见

我们主要讲一下php面向对象的一些用法与实例教程例子等哦,开始我们只讲一下面向对象的概念与php的简单例子教程哦。

 

第七章(1)面向对象详解_面向对象的概念
什么是类:组成一个对象的过程称为类.
什么是对象:类组成的东西叫对象.
类与对象之间的关系:对象由类组合而来,先有类才有对象.
什么是成员属性:定义成员静态描述. 如:人的姓名,性别,身高,体重......
什么是成员方法:定义成员动态描述.能实现一些什么功能 如:人能吃饭,走路,开车,说话......
如何去抽象一个类:
class 类名 如:人类
{
 成员属性:姓名,身高,体重...
 成员方法:走路,说话,吃饭,开车...
}
例题:
class关键字 Person类名首字母要大写
{
 成员属性
 var关键字 $name;姓名
 var $age;年龄
 var $sex;性别...
 成员方法
 function关键字 say()
  {echo "我在说话";}
 function run()
  {echo "我在走路";}
 function eat()
  {echo "我在吃饭";...}
}
产生实例化对象:
$P1=new关键字 Person类名;
$P2=new Person;

第七章(3)面向对象详解_对象实例化及使用
如何实例化对象
实例说明:
class Ren
{
 var $xingming;
 var $nianling;
 var $xingbie;
 var $shouji;
 function shuohua()
 {echo "我在说话<br>";}
 function zoulu()
 {echo "我在走路<br>";}
 function chifan()
 {echo "我在吃饭<br>";}
}
class shouji
{
 var $pinpai;
 var $yanse;
 var $chiceng;
 function dadianhua()
 {}
 function jiedianhua()
 {}
 function faxinxi($ren,$xinxi)
 {$ren->shouji->shouxinxi($xinxi);}
 function shouxinxi($xinxi)
 {echo "接信息".$xinxi."<br>";}
}
//实例化.人:
$r1=new Ren();    $r2=new Ren();    $r3=new Ren();
//实例化.人的姓名:
$r1->xingming="张三";    $r2->xingming="李四";    $r3->xingming="王五";
//实例化.手机:
$s1=new shouji();    $s2=new shouji();    $s3=new shouji();
//实例化.人用手机:
$r1->shouji=$s1;    $r2->shouji=$s2;    $r3->shouji=$s3;
//实例化.人发信息:
$r1->shouji->faxinxi($r2,"hello");
输出:接信息 hello

[!--infotagslink--]

相关文章

  • JS实现简单面向对象的颜色选择器实例

    这篇文章主要介绍了JS实现简单面向对象的颜色选择器,以完整实例形式分析了JavaScript基于面向对象实现颜色选择器的具体步骤与实现技巧,需要的朋友可以参考下...2016-04-23
  • 浅析从面向对象思维理解Vue组件

    用面向对象的思维去理解Vue组件,可以将所有的事物都抽象为对象,而类或者说是组件,都具有属性和操作。这篇文章主要介绍了尝试用面向对象思维理解Vue组件,需要的朋友可以参考下...2021-07-11
  • 浅谈对c# 面向对象的理解

    这篇文章主要介绍了个人对c# 面向对象的理解,算是一个入门篇吧,给需要的小伙伴参考下,抛砖引玉。...2020-06-25
  • php面向对象之反射功能与用法分析

    这篇文章主要介绍了php面向对象之反射功能与用法,结合实例形式简单分析了php5面向对象反射的概念及具体用法,需要的朋友可以参考下...2017-04-03
  • C#面向对象编程基础概念汇总

    今天小编就为大家分享一篇关于C#面向对象编程基础概念汇总的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...2020-06-25
  • PHP面向对象开发之类中接口的应用(interface、implements)

    php类中接口的应用关键字是interface、implements了,接口是一种成员属性全部为抽象或常量的特殊抽象类,下面我们看几个实例。 类中接口的应用 1.关键字:interface...2016-11-25
  • 一起来了解JavaScript面向对象

    本篇文章主要介绍了Javascript的面向对象,小编觉得这篇文章内容很不错,需要的朋友可以看下,希望能够给你带来帮助...2021-09-27
  • C#中面向对象编程机制之继承学习笔记

    这篇文章主要介绍了C#中面向对象编程机制之继承学习笔记,本文给出一个简单子实例讲解C#中的继承,并讲解了一些C#继承的知识技巧,需要的朋友可以参考下...2020-06-25
  • PHP的面向对象编程:开发大型PHP项目的方法(三)(转载)

    PHP的面向对象编程:开发大型PHP项目的方法(三) 作者:Luis Argerich 译者:limodou   重载(与覆盖不同)在PHP中不支持。在OOP中,你可以重载一个方法来实现两个或重多的方法...2016-11-25
  • PHP面向对象:使用接口与组合模拟多继承(1/2)

    在php中不支持多重继承,如果我们向使用多个类的方法而实现代码重用有什么办法么?那就是组合。在一个类中去将另外一个类设置成属性。 下面的例子,模拟了多重继承。 view s...2016-11-25
  • Java面向对象基础,类,变量,方法

    这篇文章主要介绍了Java面向对象基础,类,变量,方法,需要的朋友可以参考下...2020-10-03
  • 详解JavaScript基于面向对象之继承

    这篇文章主要介绍了JavaScript基于面向对象之继承...2015-12-14
  • 详解JS面向对象编程

    这篇文章主要为大家介绍了js面向对象编程,感兴趣的小伙伴们可以参考一下...2016-01-25
  • php 面向对象编程之构造方法与析构方法

    大多数类都有一种称为构造函数的特殊方法。当创建一个对象时,它将自动调用构造函 数,也就是使用new 这个关键字来实例化对象的时候自动调用构造方法。 构造函数的声...2016-11-25
  • PHP:我坚决站在面向对象一边

    PHP 语言从诞生起,就具有了很好的面向过程编程的特性。只是在其进化过程中才逐渐加强了面向对象的特性,直到 PHP5.0,也才接近完善。一般来说,PHP 的初学者和...2016-11-25
  • 老生常谈PHP面向对象之命令模式(必看篇)

    下面小编就为大家带来一篇老生常谈PHP面向对象之命令模式(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2017-05-26
  • PHP5.0对象模型探索之对象串行化

    串行化可以把变量包括对象,转化成连续bytes数据,你可以将串行化后的变量存在一个文件里或在网络上传输,然后再反串行化还原为原来的数据。你在反串行化类的对象之前定义的...2016-11-25
  • Python面向对象封装操作案例详解

    这篇文章主要介绍了Python面向对象封装操作,结合具体案例形式详细分析了Python面向对象的封装、扩展等操作技巧与相关注意事项,需要的朋友可以参考下...2020-05-06
  • Python面向对象之继承原理与用法案例分析

    这篇文章主要介绍了Python面向对象之继承原理与用法,结合具体案例形式分析了Python面向对象程序设计中继承的原理、使用方法及相关操作注意事项,需要的朋友可以参考下...2020-05-06
  • JavaScript面向对象之七大基本原则实例详解

    这篇文章主要介绍了JavaScript面向对象之七大基本原则,结合实例形式详细分析了JavaScript面向对象七大基本原则,包括单一职责、开闭原则、里氏替换、依赖倒置、接口隔离、迪米特法则及组合/聚合复用原则,需要的朋友可以参考下...2020-05-07