第二个灵魂 发表于 2015-2-4 00:30:07

PHP编程:在PHP下完成耐久化

PHP原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。注意不是“Hypertext Preprocessor”的缩写,这种将名称放到定义中的写法被称作递归缩写。   在PHP下完成耐久化

“耐久化”这个概念是笔者在Java中初次接触到的,经由过程这个特征,可以将使用法式对象转化成一系列字撙节(这被称尴尬刁难象序列化),以顺应收集传输或保留。最奇奥的是,被序列化的对象还可以被从头拆卸,复原成之前的模样。这意味着,该机制能主动抵偿操作体系间的差别。换句话说,一个在Windows体系的机械上被序列化的对象可以经由过程收集传输到一台Linux体系的机械上正确无误的从头拆卸。“耐久化”可使使用法式对象不受使用法式运转工夫的限制――可以将一个对象序列化,然后保留到磁盘上,在再次需求时停止拆卸,能美满完成一种“耐久”后果。

使人高兴的是,PHP也撑持这一特征,并且从PHP3就入手下手撑持了,它是经由过程Serialize()和Unserialize()这两个函数来完成的。其实,像ASP如许的开辟情况也隐式撑持这一特征――在Session或Application对象中保留使用法式对象就是一种耐久化的体现,但遗憾的是,ASP并没有显式供应这一接口。

在PHP中,几近任何类型(这包含Integer、Boolean、Float、Array和Object)的变量都可以被序列化。之所以说“几近”,是由于惟独Resource类型不撑持序列化,这完整是由于PHP中的Resource类型实际上是指针的原因。至于String类型,因为它自己就是字撙节,所以基本没有序列化的需要。

上面将引见Serialize()和Unserialize()两个函数的用法:

string serialize (mixed value):前往value被序列化后的字撙节;
mixed unserialize (string str):前往将str停止拆卸后的对象。

上面是这两个函数的使用实例:

<?php
//class.inc.php文件,用于保留类的信息

//用于测试的用户信息类
class Userinfo
{
var $username;
var $password;
var $datetime;
function Userinfo($username, $password, $datatime)
{
$this -> username = $username;
$this -> password = $password;
$this -> datetime = $datetime;
}
function output()
{
echo "User Information -> <br>";
echo "Username: ".$this -> username."<br>";
echo "Password: ".$this -> username."<br>";
echo "Datetime: ".$this -> username."<br>";
}
}
?>

<?php
//login.php文件,用于注册新用户

//导入类文件
require_once("class.inc.php");

//新建对象
$user = new Userinfo($_POST['username'], $_POST['password'], date("Y-n-j H:i:s"));
//序列化对象
$user = Serialize($user);

//将对象写入当地数据库
$con = mysql_connect();
mysql_select_db("test");
mysql_query($con, "INSERT INTO testTable (id, userinfo) VALUES ('1', '$user')");
mysql_close($con);
?>

<?php
//userinfo.php文件,用于显示用户信息

require_once("class.inc.php");

//从数据库中掏出对象
$con = mysql_connect();
mysql_select_db("test");
$result = mysql_query($con, "SELECT * FROM testTable WHERE id=1");
$record = mysql_fetch_assoc($result);
$user = Unserialize($record['userinfo']);
//输入用户信息
$user -> output();
mysql_free($result);
mysql_close($con);
?>

在对象序列化中,最主要的是在“拆卸”的页面中必定要包括该对象的类的界说信息,不然会呈现毛病。固然,上里只是用于测试,在实践的使用中,为了避免序列化后的对象的内容被更改,普通还要对字撙节停止“数字签名”,在拆卸时,再对“签名”停止验证,以避免对象信息被不法改动。

不过语法好学,但是怎么用语法来实现每个人都有每个人的方式,几乎是各有千秋。然而借鉴别人成功的代码,绝对是有益无害,因此,多看那些经过千锤百炼凝出来的经典代码,是进阶的最好方法。

金色的骷髅 发表于 2015-2-4 13:14:52

我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:

admin 发表于 2015-2-9 23:16:01

首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。

冷月葬花魂 发表于 2015-2-10 04:21:59

我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。

飘飘悠悠 发表于 2015-2-21 00:31:49

写的比较杂,因为我也是个新手,不当至于大家多多指正。

活着的死人 发表于 2015-3-4 11:48:45

首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。

因胸联盟 发表于 2015-3-11 16:21:49

环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。

乐观 发表于 2015-3-12 11:52:52

曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ;

变相怪杰 发表于 2015-3-13 00:50:13

这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。

小女巫 发表于 2015-3-14 14:38:33

我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。

谁可相欹 发表于 2015-3-17 11:08:31

小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。

不帅 发表于 2015-3-17 21:36:24

首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。

若相依 发表于 2015-3-25 03:08:12

如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,

山那边是海 发表于 2015-4-5 08:07:57

我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。

小妖女 发表于 2015-4-20 12:39:45

最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。

分手快乐 发表于 2015-4-22 05:15:56

要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。

老尸 发表于 2015-5-1 20:09:16

先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。

第二个灵魂 发表于 2015-5-3 20:22:48

这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己

蒙在股里 发表于 2015-5-10 03:31:08

最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。

莫相离 发表于 2015-6-8 10:08:11

我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
页: [1]
查看完整版本: PHP编程:在PHP下完成耐久化