博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php -- 用文本来存储内容,file_put_contents,serialize,unserialize
阅读量:5949 次
发布时间:2019-06-19

本文共 1497 字,大约阅读时间需要 4 分钟。

根据存储的内容来划分

字符串:

file_put_contents :将一个字符串写入文件

语法:int file_put_contents ( string $filename ,  $data [, int $flags = 0 [, resource$context ]] )

参数

filename:要被写入数据的文件名。

data:要写入的数据。类型可以是  或者是 stream 资源(如上面所说的那样)。

如果 data 指定为 stream 资源,这里 stream 中所保存的缓存数据将被写入到指定文件中,这种用法就相似于使用  函数。

参数 data 可以是数组(但不能为多维数组),这就相当于 file_put_contents($filename, join('', $array))

flags:flags 的值可以是 以下 flag 使用 OR (|) 运算符进行的组合。

Available flags
Flag 描述
FILE_USE_INCLUDE_PATH 在 include 目录里搜索 filename。 更多信息可参见 。
FILE_APPEND 如果文件 filename 已经存在,追加数据而不是覆盖。
LOCK_EX 在写入时获得一个独占锁。

context:一个 context 资源。

//没有使用flag 
//使用flag

 

 

非字符串

序列化:产生一个可存储的值(字符串)的表示。即,将对象或者数组等,转换为可存储到文件中的类型(字符串)

语法:string serialize (  $value )

serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。

有利于存储或传递 PHP 的值,同时不丢失其类型和结构。

想要将已序列化的字符串变回 PHP 的值,可使用 serialize() 可处理除了  之外的任何类型。甚至可以 serialize() 那些包含了指向其自身引用的数组。你正 serialize() 的数组/对象中的引用也将被存储。

当序列化对象时,PHP 将试图在序列动作之前调用该对象的成员函数 __sleep()。这样就允许对象在被序列化之前做任何清除操作。类似的,当使用  恢复对象时, 将调用 __wakeup() 成员函数。

序列化:

 

 

反序列化:unserialize() 对单一的已序列化的变量(字符串)进行操作,将其转换回 PHP 的值。

语法: unserialize ( string $str )

str:序列化后的字符串。

若被解序列化的变量是一个对象,在成功地重新构造对象之后,PHP 会自动地试图去调用  成员函数(如果存在的话)。

Note: unserialize_callback_func 指令

如果在解序列化的时候需要实例化一个未定义类,则可以设置回调函数以供调用(以免得到的是不完整的 “__PHP_Incomplete_Class”)。可通过php.ini 或 .htaccess 定义‘unserialize_callback_func’。每次实例化一个未定义类时它都会被调用。若要禁止这个特性,只需置空此设定。

 

unserialize_callback_func 例子

 

unserialize,将对应的字符串,反过来构造成原来的数据类型

 

 

为什么不是Person类的对象呢?

因为要得到一个类的对象,必须要保证当前类已经被加载。

解决方法:在事先加载对应的类即可。

 

反序列化自动加载

 

 

转载地址:http://coixx.baihongyu.com/

你可能感兴趣的文章
centos 7 下安装mysql5.7
查看>>
【记录】Xmind8 Pro 激活
查看>>
UpdatePanel 控件失效,不能局部刷新
查看>>
C语言博客作业05--指针
查看>>
双向绑定的具体应用场景有哪些
查看>>
JS循环汇总
查看>>
Secret Code
查看>>
H5混合开发APP配置以及第一个工程--博客园老牛大讲堂
查看>>
Laravel通过Swoole提升性能
查看>>
ES6系列_5之数字操作
查看>>
【转】mysql 分析查找执行效率慢的SQL语句
查看>>
在已经定义好的系统类或者自定义类中添加扩展方法
查看>>
各种SKYPE网页代码,SKYPE在线代码
查看>>
eclipse安装与使用
查看>>
Java零基础学习(二)自定义类型及基本语法
查看>>
linux中强大且常用命令:find、grep
查看>>
jdk源码分析红黑树——插入篇
查看>>
android使用JNI调用C,C++
查看>>
C++ 标准模板库介绍(STL)
查看>>
【构造】【贪心】hdu6090 Rikka with Graph
查看>>