java类似php魔术方法_PHP与类有关的几个魔术方法

与类有关的其他魔术方法

序列化与反序列化技术

含义:

序列化:

就是将一个变量所代表的“内存”数据,转换为“字符串”形式并持久保存在硬盘上的一种做法。

反序列化:

就是将序列化之后保存在硬盘上的“字符串数据”,恢复为其原来的内存形式的变量数据的一种做法。

序列化的做法:

$v1 =  123; //这是一个变量,代表任意的内存数据

$s1 =  serialize( $v1 ); //将任何类型的变量数据,转换为“字符串”

file_put_contents( ‘要保存的目标文本文件’, $s1); //将该字符串,保存到一个文件里(就是硬盘数据)

反序列化的做法:

$s1 = file_get_contents( ‘保存序列化数据的目标文本文件’); //从一个文件里读出其中的所有字符

$v1 =  unserialize( $s1 ); //将该字符串数据,反序列化转换为变量(数据)

举例:

先进行基本数据的序列化:

01d922593e49c2262c8e5911342c99e2.png

再来对他们进行反序列化:

82d11f5c4c1de340f926c4be021890c0.png

__sleep():用于对象的序列化:

1,对一个对象进行序列化,只能将其属性数据“保存起来”,而方法被忽略(方法不是数据)

2,对象的序列化的时候,会自动调用该对象所属类的这个魔术方法:__sleep()(前提是有该方法)。

且,此时,该方法必须返回一个数组,数组中是“计划”要进行序列化的属性名;

举例:

类文件内容如下:

bfcdc454b04aaf4455cb406f72a327a5.png

4948bf4a0050a7ccc2df1e41a696bb2c.png

__wakeup:用于对象的反序列化:

1,对一个对象进行反序列化,其实是恢复其原来保存起来的属性数据,而且,此时必然需要依赖该对象原本的所属类;

2,对象在反序列化的时候,会自动调用该对象所属类的这个魔术方法:__wakeup()

举例:

c9b9102c3dba507a177d891e99bbfaf5.png

下面演示可选属性的序列化(通过__sleep):

7195d7909eb1056f0827ae885c6dba09.png

然后,对其对象进行序列,并显示该对象的数据:

2fdd4f7f14f5e75ecc8dd01c5b9122f5.png

然后,在另一个页面中,对其进行反序列化:

bd5aed190761eef23318c612e7b3a649.png

__tostring()魔术方法——比较常用!

含义:

将一个对象“当做”一个字符串来使用的时候,会自动调用该方法,并且在该方法中,可以返回一定的字符串,以表明该对象转换为字符串之后的结果。

注意:

如果没有定义该方法,则对象无法当做字符串来使用!!!

f166571c0b0f479b9657bff64ea509ea.png

19a359d2411a2e1d4110c0e2301ea67b.png

__invoke()魔术方法:

将对象当作函数来使用的时候,会自动调用该方法。通常不推荐这么做。

class  A{

function  __invoke(){

echo “
我是一个对象呀,你别当我是一个函数来随便调用!”;

}

}

$obj1 = new A();

$obj1(); //此时就会调用类中的方法:__invoke()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IIS ARR设置HTTP跳转到HTTPS

GUI Version - Select the website you wish to configure- In the “Features View” panel, double click URL Rewrite You will notice there are currently no rules configured for this site. Click “Add Rules…” in the Actions menu to the right of the “Features…

2013.7.15DAY2

今天自己做了炸土豆 吼吼~ 才知道鸡蛋和小麦粉一起弄成浆糊涂到土豆条上炸效果很好~不过做失败了一些啦 失败的就用青椒炒着吃。。。。 下午准备做冰品来着。。。结果快递都到了特别忙。。。就只弄了杯冰啤酒。。。 虐了两道水题,贴上代码。。过于水了。。。 Descri…

AutoCAD.NET API 最新(2012)教程下载及在线视频教程DevTV

Autodek最近发布了基于最新版的AutoCAD 2012的.net API开发教程。基本内容包括: Overview of .NETPlugin BasicsUser InteractionDatabase fundamentalsDictionariesUser InterfaceEventsInputPoint MonitorJigs现在就可以从AutoCAD开发者中心下载, 看图…

inherits java_JAVA内部类和组合的区别

Why inner classes?At this point you’ve seen a lot of syntax and semantics describing the way inner classes work, but this doesn’t answer the question of why they exist. Why did Sun go to so much trouble to add this fundamental language feature? Feedbac…

SQL Server里一些未公开的扩展存储过程

SQL Server里一些未公开的扩展存储过程 [转帖] 博客天地 www.inbaidu.comSQL Server里一些未公开的扩展存储过程 扩展存储过程(xp)是直接运行在SQL Server地址空间里的动态链接库,是通过使用SQL Server开放数据服务API(SQL Server…

Linux技巧:一次删除一百万个文件最快方法

昨天,我看到一个非常有趣的删除一个目录下的海量文件的方法。这个方法来自http://www.quora.com/How-can-someone-rapidly-delete-400-000-files里的Zhenyu Lee。 他没有使用find 或 xargs,他很有创意的利用了rsync的强大功能,使用rsync –de…

install python_python install on windows 10

图 1官网2、下载安装包:图 2 Downloads – windows图 3选择版本图 4选择离线安装版本图 5保存下载文件—文件名自己可以修改可能有人看到windows 几个版本,对几个版本有迷惑的地方,解释图 6几个版本的差异说明文字解释:An e…

iOS开发常见错误

错误1: 1.1这种错误都是storyboard有问题 解决:当前storyboard的Custom Class是MJViewController,代码中MJViewController继承自UITableViewController。 而storyboard目前提供的是UIViewController,并没有为MJViewController提供…

windows bat 批处理 !vm 合并快播文件

今天简单的写了一个bat批处理文件 用来处理快播的p2p的文件,一般回事这样的目录 你可以下载如下代码 echo off for /r %%a in (.) do (echo %%acd %%acopy /b *.!mv test.rmvb ) pause保存为merge.bat,就可以执行了 代码解释: 扫描该目录下的…

sso接口的调用

之前一直想sso接口已经写好了&#xff0c;登录注册功能是怎么调用的呢&#xff1f;原来在登录注册的jsp页面实现的接口的调用&#xff0c;页面的校验和验证功能在jsp页面即可实现。 注册页面&#xff1a; <% page language"java" contentType"text/html; cha…

java js获取css方法_5种JavaScript和CSS交互的方法

原标题&#xff1a;5种JavaScript和CSS交互的方法随着浏览器不断的升级改进&#xff0c;CSS和Java之间的界限越来越模糊。本来它们是负责着完全不同的功能&#xff0c;但最终&#xff0c;它们都属于网页前端技术&#xff0c;它们需要相互密切的合作。我们的网页中都有.js文件和…

(转)Http协议经典详解

转自&#xff1a;http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP 是一个属于应用层的面向对象的协议&#xff0c;由于其简捷、快速的方式&#xff0c;适用于分布式超媒体信息系统。它于1990…

CentOS 同步时间

来源&#xff1a;http://www.ctusky.com/16/0497/ 用date查看系统当前时间&#xff0c;date -R 可查看时区。 CentOS 同步时间由ntp服务提供&#xff0c;可以用"yum install ntp -y"安装. 装完后运行命令 ntpdate cn.pool.ntp.org同步时间&#xff0c;然后hwclock -w…

[逆向][Writeup]ISG2015 flagfinder - .NET程序逆向

这个题目同样是一道.NET的逆向题&#xff0c;.NET的逆向方法在之前的博文中已经介绍过&#xff0c;这里不做重复的说明。本题的源程序可以在我的github上下载&#xff1a;https://github.com/gsharpsh00ter/reverse 0x01 逆向 flagfinder为.NET编译的PE文件&#xff0c;用dnSpy…

spring是如何管理 事务的

Spring提供的事务管理可以分为两类&#xff1a;编程式的和声明式的。编程式的&#xff0c;比较灵活&#xff0c;但是代码量大&#xff0c;存在重复的代码比较多&#xff1b;声明式的比编程式的更灵活方便。 1、传统使用JDBC的事务管理 以往使用JDBC进行数据操作&#xff0c;使用…

java 编译原理 字符串_Java编译原理(javac)

Java中的编译分为两个部分&#xff1a;源码文件编译成字节码文件(前端编译)字节码文件被虚拟机加载以后编译成机器码(后端编译)对于开发来说接触的一般都是第一个步骤也就是源码编译成字节码文件(class文件)&#xff0c;第二个步骤开发几乎不会接触&#xff0c;因为这是虚拟机在…

sql2012一段时间无法连接报53错误

2019独角兽企业重金招聘Python工程师标准>>> 解决方案 在sqlserver网络配置下的msqlserver协议下改将ip3改成如下图所示 转载于:https://my.oschina.net/u/2511906/blog/840373

ICE第三篇------一些疑难点

1 间接代理 参考http://blog.sina.com.cn/s/blog_53e8499c0100lkoo.html IceGrid用于支持分布式网络服务应用&#xff0c;一个IceGrid域由一个注册表&#xff08;Registry&#xff09;和任何数目的节点(Node)构成。注册表&#xff08;Registry&#xff09;和节点(Node)一起合作…

windows phone 8 使用页面传对象的方式 实现页面间的多值传递

在做windows phone 开发的时候&#xff0c;会经常碰到页面间之间的跳转和传递数据&#xff0c;如果传递的值不多&#xff0c;只有两三个&#xff0c;我们通常使用NavigationService.Navigate(new Uri("页面名? Name“”&ID“ ”, UriKind.Relative)); 要是碰到要传递…

php生成图片验证码代码,PHP生成图片验证码以及点击切换的代码

这篇文章主要介绍了PHP生成图片验证码实例,同时介绍了点击切换(看不清&#xff1f;换一张)效果实现方法,需要的朋友可以参考下这里来看下效果:现在让我们来看下 PHP 代码<?php session_start();function random($len) {$srcstr "1a2s3d4f5g6hj8k9qwertyupzxcvbnm&quo…