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);
?>
在对象序列化中,最主要的是在“拆卸”的页面中必定要包括该对象的类的界说信息,不然会呈现毛病。固然,上里只是用于测试,在实践的使用中,为了避免序列化后的对象的内容被更改,普通还要对字撙节停止“数字签名”,在拆卸时,再对“签名”停止验证,以避免对象信息被不法改动。
不过语法好学,但是怎么用语法来实现每个人都有每个人的方式,几乎是各有千秋。然而借鉴别人成功的代码,绝对是有益无害,因此,多看那些经过千锤百炼凝出来的经典代码,是进阶的最好方法。 我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能: 首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。 我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。 写的比较杂,因为我也是个新手,不当至于大家多多指正。 首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。 环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。 曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ; 这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。 我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。 小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。 首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。 如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域, 我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。 最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。 要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。 先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。 这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己 最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。 我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
页:
[1]