PHP反序列化及实例浅谈

目录

PHP面向对象的基本概念

面向对象

类的定义

类与对象

类的结构

创建一个类:

实例化和赋值

修饰符

常用访问权限修饰符

序列化基础知识

序列化作用(了解)

私有属性变量名字长度加2,因为有两个空格

受保护属性变量名字长度加3,增加的是0*0

魔术方法构造和析构

_construct()

_destruct()

_sleep()

_wakeup()

_toString()

_invoke()

错误调用相关魔术方法

_call()

_callStatic()

_get()

pop链

[SWPUCTF 2021 新生赛]ez_unserialize

[SWPUCTF 2022 新生赛]1z_unserialize

[SWPUCTF 2022 新生赛]ez_ez_unserialize


PHP面向对象的基本概念

面向对象

相对于面向过程(是以“整体事件”为中心的编程思想,把解决步骤分析出来再用函数把这些步骤实现)来说,面向对象是一种以“对象”为中心的编程思想,把解决的问题分成各个“对象”。

类的定义

类是定义了一件事物的抽象特点,它将数据的形式以及这些数据上的操作分装在一起。

对象是具有类类型的变量,是对类的实例

内部构成:成员变量(属性)+成员函数(方法)

继承:继承性是子类自动共享父类数据结构和方法的机制,是类之间的一种关系

类与对象

类的结构

类:定义类名、定义成员变量(属性)、定义成员函数(方法)

class Class_Name{
//成员变量声明
//成员函数声明
}

创建一个类:

class hero{     //定义类(类名)
var $name ='zs';     //声明函数变量
var $sex;   //var为一种修饰符
function jineng($var1){ //声明成员函数(方法)
echo $this->name;   //使用预定义$this调用成员变量
echo $var1;  //成员函数传参$var1可直接调用
}
}

实例化和赋值

在上述创建一个类的基础上,添加以下代码

$cyj=new hero();//实例化类hero()为对象cyj
$cyj->name='chyj';//参数赋值
$cyj->sex='mam';
$cyj->jineng(var1:'zuofan');//调用函数
print_r($cyj);//打印对象cyj

修饰符

访问权限修饰符:对属性的定义

常用访问权限修饰符

public:公共的,在类的内部、子类中 或者类的外部都可以使用,不受限制

protected:受保护的,在类的内部、子类中可以使用,但不能在类的外部使用

private:私有的,只能在类的内部使用,在类的外部或者子类中都无法使用

在定义前使用,列如

public $name='chyj'

增加子类:

class hero2 extends hero{}

序列化基础知识

序列化作用(了解)

将对象的状态信息转换为可以存储或传输的形式的过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值