当前位置:首页 » 编程语言 » 串行化php

串行化php

发布时间: 2023-08-18 21:39:55

1. php5的PHP特点

字符串与数组处理
字符串和数组是所有计算机编程语言中最基本的数据结构。在各种语言中,对这两种数据结构的支持是完善的,PHP也是如此。作为一种面向Web开发的程序语言,PHP也有着自己的独特性。
PHP有着简单易用和功能强大的特点,这完全要归功于其开放的模块化设计。在基于Zend引擎的支持和优化下,各种各样的扩展模块,其功能已经覆盖几乎所有的Web应用。
URL的处理
利用URL函数库,PHP可以用简单的方法对URL地址进行解码或编码。而在此之前,需要编写一组代码加以实现。
正则表达式
正则表达式是一种强大的字符串分析工具。正则表达式早期仅用于UNIX系统程序,现在已经被绝大多数系统,程序所支持。随着正则表达式移植到交叉平台的程序语言的发展,其功能也日益完善。
单词拼写的处理
利用单词拼写检查库PSpell,PHP可以像Word中的“单词拼写检查”一样,对文本中的错误拼写进行指正。尽管这不常用,但对于某些场合(如辅助编辑进行校勘),这种处理是非常有益的。
数据的串行化
使用serialize()及unserialize()等函数,可以将数组、对象等数据进行序列化编码,从而方便其在数据库或会话周期中的存储。另外,利用WDDX(分布式数据格式)串行化数据,可以在应用环境中交换更为复杂的数据结构。
对不同类型文件的支持
PHP不仅仅局限于HTML和文本文件的处理,也可以符合特定格式的文件进行快速处理。例如对于CVS(逗号分隔文件)、INI(Windows配置文件)以及XML文件,PHP中都有专用的解析函数。除了上述文本文件,PHP还提供可以读取 ZIP文件的zlib压缩文件库。
PHP能够非常简便的输出文本,如XHTML以及任何其他形式的XML文件。PHP还能动态的输出图像(GD2库)、PDF文件(PDFLib库)甚至Flash动画(LibSWF和Ming库)。在Windows系统中,PHP能够在服务器端开辟出一块动态的缓存空间,从而直接打印这些文件(使用Printer扩展)。
简便的数据库操作
PHP最显着的特征之一,是它支持很大范围的数据库系统。用户会发现,利用PHP编写基于数据库支持的动态网页简单得难以置信。目前,PHP支持如表1-1所示的数据库系统。
表1-1 PHP支持的数据库系统
Adabas D dBase Empress
FilePro(只读) Hyperwave IBM DB2
Informix Ingres InterBase
FrontBase Msql Direct MS-SQL
MySQL ODBC Oracle
Ovrimos PostgreSQL SQLite
Solid Sybase Velocis
UXIX dbm
目录与文件的操作
文件系统是操作系统的主要组成部分,是数据存储的基本单元。利用目录和文件函数,PHP可以对本地文件系统进行直接操作,如对文件或目录进行的创建、删除和读取操作,也可以对其所有者权限、组别等信息进行查询和变更操作。
当激活了phpini文件中的“allow_url_fopen”选项后,利用简单的 fopen()或fwrite()等函数就可以对远程文件进行操作。例如:程序可以读取或下载远程Web服务器的文件;对于具有适当权限的用户,还可以登录远程FTP服务器进行数据的保存或下载操作,甚至可以使用syslog()函数进行分布式日志的管理和维护。

2. PHP数组里面存放对象

楼上解释正确,不过我补充一下。
既然初始化是在类声明之后,那么可以通过手动串行化和反串行化来达到目的。
保存的时候使用serialize来保存,提取恢复的时候使用unserialize来恢复。
当然,这个还有一个要注意的地方,需要保存的对象最好是只包含数据,意思是,不要有数据库连接资源、文件资源之类的,如果包含这些,串行和反串行的结果都是一个int 0,反串行的时候可能不能正常工作。
至于对象串行反串行的一些可定制的功能,可以参考帮助文档的这个部分:
http://dk2.php.net/manual/zh/language.oop.magic-functions.php
通过定义魔术函数__sleep __wakeup来实现。

3. 什么是对象的串行化

串行化可以把变量包括对象,转化成连续bytes数据. 你可以将串行化后的变量存在一个文件里或在网络上传输. 然后再反串行化还原为原来的数据. 你在反串行化类的对象之前定义的类,PHP可以成功地存储其对象的属性和方法. 有时你可能需要一个对象在反串行化后立即执行. 为了这样的目的,PHP会自动寻找__sleep和__wakeup方法.

当一个对象被串行化,PHP会调用__sleep方法(如果存在的话). 在反串行化一个对象后,PHP 会调用__wakeup方法. 这两个方法都不接受参数. __sleep方法必须返回一个数组,包含需要串行化的属性. PHP会抛弃其它属性的值. 如果没有__sleep方法,PHP将保存所有属性.

例子6.16显示了如何用__sleep和__wakeup方法来串行化一个对象. Id属性是一个不打算保留在对象中的临时属性. __sleep方法保证在串行化的对象中不包含id属性. 当反串行化一个User对象,__wakeup方法建立id属性的新值. 这个例子被设计成自我保持. 在实际开发中,你可能发现包含资源(如图像或数据流)的对象需要这些方法.

4. php 对象串行化(序列化)到底有什么用

如果使用URL传值的话,一些特殊字符比如含有&的字符串,分为两个参数,例如?a=bb&cc,这样你使用GET的得到a的参数就是bb,而不是bb&cc。我理解的序列化还有就是加密,序列化之后你传值的参数用户不易知道是什么。希望能帮到你!

5. PHP如何将下面数组遍历,插入数据库

有两个方法可供选择,一种是把数据存入csv文件,然后执行load data infile
还有一种就是类似于sql server里面的bulk insert,使用insert语句插入批量数据,结合PHP的implode函数,
可以很简单的实现大批量数组数据的一次性插入。
[php] view plain
$statement = "INSERT INTO table (title, type, customer) VALUES ";
foreach( $data as $row) {
$statement .= ' ("' . implode($row, '","') . '")';
}
不过大批量数据的插入,需要注意mysql在内存上有限制:
http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_bulk_insert_buffer_size
bulk_insert_buffer_size变量的默认大小为8M, 是指单个线程占用的大小限制,设置为0,表示不做限制。

热点内容
算法牛人左 发布:2025-02-05 15:31:02 浏览:438
php筛选功能 发布:2025-02-05 15:29:09 浏览:167
ip匹配服务器 发布:2025-02-05 15:10:35 浏览:909
php语法后 发布:2025-02-05 15:10:34 浏览:59
oppor9s怎么压缩文件 发布:2025-02-05 15:00:34 浏览:639
苹果耳塞怎么改安卓也能用 发布:2025-02-05 14:50:54 浏览:558
安卓如何鉴别手机真假 发布:2025-02-05 14:28:15 浏览:121
ffmpeglinux编译 发布:2025-02-05 14:28:04 浏览:545
服务器如何做界面 发布:2025-02-05 14:27:23 浏览:291
访问学者单位推荐意见 发布:2025-02-05 14:13:05 浏览:854