仓酷云
标题:
PHP编程:密切接触:在PHP下完成耐久化
[打印本页]
作者:
蒙在股里
时间:
2015-2-4 00:11
标题:
PHP编程:密切接触:在PHP下完成耐久化
《PHP+MYSQL WEB开发(第三版)》号称圣经级,(也许是个不错的选择(声明:作者没给我啥好处费,我也不是书托,隔着大老远,我连他老兄的面都没见过的说-_-)
“耐久化”这个概念是笔者在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 09:54
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
作者:
第二个灵魂
时间:
2015-2-9 21:58
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
作者:
再现理想
时间:
2015-2-10 00:10
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
作者:
莫相离
时间:
2015-2-17 18:53
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
作者:
仓酷云
时间:
2015-3-5 22:11
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年 具体的记不清啦,囧。
作者:
爱飞
时间:
2015-3-8 04:51
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
作者:
灵魂腐蚀
时间:
2015-3-15 20:40
当然这种网站的会员费就几十块钱。
作者:
小女巫
时间:
2015-3-19 02:08
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
作者:
活着的死人
时间:
2015-3-23 17:13
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
作者:
兰色精灵
时间:
2015-3-24 12:32
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
作者:
老尸
时间:
2015-3-30 18:26
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
作者:
愤怒的大鸟
时间:
2015-4-2 19:28
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
作者:
小魔女
时间:
2015-4-10 06:43
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
作者:
小妖女
时间:
2015-4-10 09:29
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线 \\\\\\\'_\\\\\\\' ;
作者:
深爱那片海
时间:
2015-4-10 14:58
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
作者:
海妖
时间:
2015-4-16 02:10
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
作者:
简单生活
时间:
2015-4-16 11:12
做为1门年轻的语言,php一直很努力。
作者:
再见西城
时间:
2015-5-2 09:56
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
作者:
谁可相欹
时间:
2015-5-3 05:29
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
作者:
只想知道
时间:
2015-6-4 05:57
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2