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);
?>
在对象序列化中,最主要的是在“拆卸”的页面中必定要包括该对象的类的界说信息,不然会呈现毛病。固然,上里只是用于测试,在实践的使用中,为了避免序列化后的对象的内容被更改,普通还要对字撙节停止“数字签名”,在拆卸时,再对“签名”停止验证,以避免对象信息被不法改动。 掌握静态网页的制作技术是学习开发网站的先决条件,这一点就讲到这里,因为这篇文章不是教程文章,也就不对技术进行深入的刨析了。 php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会) 先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。 首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。 学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。 说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。 建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。 当然这种网站的会员费就几十块钱。 先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。 如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了, 环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。 要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。 我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。 至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。 曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ; 环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。 开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。 做为1门年轻的语言,php一直很努力。 没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。 多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
页:
[1]
2