再现理想 发表于 2015-2-4 00:09:20

PHP教程之php:用序列化或session对象让oo停止究竟...

参加PHP开发学习,或许只是一次偶然的想法吧!只是想在走向社会之前体验、学习在一个公司或者说是项目团队之中如何去更有效的沟通、交流、共同合作,还有就是为毕业实习找工作增加伐码。session|对象   php:用序列化或session对象让oo停止究竟


php撑持面向对象编程,这使得咱们在编程时可以尽量利用类及对象来简化

咱们的法式,削减代码保护的任务量.

可是因为变量到剧本履行终了就释放,咱们本页所生成的对象想在其它页面利用时

便碰着了费事.可是,在良多情形下,有些义务在一两个页面是没法完成的.假如可以

将对象及其办法传递到咱们想利用对象的页面,那岂不是个很好的主张.

固然用get 或post的hide办法传递对象变量然后在新页面创立一新的对象,再然后

用机关函数来初始化新对象,仿佛也行的通,可是......,很费事,想必人人能想像失掉吧.

经由长工夫的测验考试,现总结两种办法来传递对象.

一种,序列化(php4才具有的功效),使用这个功效咱们可以将对象序列化,然后在咱们需求

的页面将对象变量反序列化来利用.

举例以下:

//*********class.php 界说类*********
<?
class a
{
    var $a;
    var $b;
    var $c;
    function a($x,$y)
    {
      $this->a=$x;
      $this->b=$y;
      $this->give_var_value();
    }

    function give_var_value()
    {
      for($i=0;$i<100;$i++)
      {
            $this->c[$i]=$i;
      }
    }

    function show_var_value()
    {
      echo $this->a.$this->b."<br>";
      for($i=0;$i<100;$i++)
      {
            echo "c[$i]=".$this->c[$i]."<br>";
      }

    }
   
}

?>

//**************a.php 创立对象并序列化**************
<?

require_once("class.php");

$a=new a("hello,","world!");

$s = serialize($a); //序列化对象a

$fp = fopen("store", "w");//以"w"体例翻开一文件并取得文件句柄,请在此注重目次属性.

fputs($fp, $s);//写入文件

fclose($fp);//封闭文件句柄

?>

//**************b.php 反序列化对象并挪用其办法**************

<?

require_once("class.php");//因为序列化对象不克不及序列化其办法,所以必需require class.php文件

$s = implode("", @file("store"));

$a = unserialize($s);

$a->show_var_value();

?>



以上例子在win2k server apache2.0.36 php4.2.1调试经由过程


序列化只能用于无限用户的情形下,由于需求为每一个用户创立文件,要主张目次的权限,并且包管文件名不克不及反复.在用户不克不及正常加入

阅读器的情形下,不克不及包管文件被删除.所以这类办法用在后台办理时对照便利.


当用户数目良多时,咱们可以用session来保留对象.由于session文件是由体系来办理的,所以咱们不用为文件的创立,

删除,目次权限等成绩而伤头脑.示例以下:

//*******************a1.php 将对象注册为session变量****************

<?

require_once("class.php");

session_start();

$_SESSION["a"]=new a("hello,","world!");

?>

//*******************b1.php 利用session变量****************

<?

require_once("class.php");//一样,注册对象为session变量时其实不能保留其办法,所以必需require class.php文件

session_start();

$_SESSION["a"]->show_var_value();

?>

以上例子在win98se apache2.0.36 php4.2.1调试经由过程


附录:现将对象序列化和注册为session变量的文件粘贴以下,但愿有心人能剖析出一二来供人人参考.

序列化文件:

O:1:"a":3:{s:1:"a";s:6:"hello,";s:1:"b";s:6:"world!";s:1:"c";a:100:{i:0;i:0;i:1;i:1;i:2;i:2;
i:3;i:3;i:4;i:4;i:5;i:5;i:6;i:6;i:7;i:7;i:8;i:8;i:9;i:9;i:10;i:10;i:11;i:11;i:12;i:12;i:13;i
:13;i:14;i:14;i:15;i:15;i:16;i:16;i:17;i:17;i:18;i:18;i:19;i:19;i:20;i:20;i:21;i:21;i:22;i:2
2;i:23;i:23;i:24;i:24;i:25;i:25;i:26;i:26;i:27;i:27;i:28;i:28;i:29;i:29;i:30;i:30;i:31;i:31;
i:32;i:32;i:33;i:33;i:34;i:34;i:35;i:35;i:36;i:36;i:37;i:37;i:38;i:38;i:39;i:39;i:40;i:40;i:
41;i:41;i:42;i:42;i:43;i:43;i:44;i:44;i:45;i:45;i:46;i:46;i:47;i:47;i:48;i:48;i:49;i:49;i:50
;i:50;i:51;i:51;i:52;i:52;i:53;i:53;i:54;i:54;i:55;i:55;i:56;i:56;i:57;i:57;i:58;i:58;i:59;i
:59;i:60;i:60;i:61;i:61;i:62;i:62;i:63;i:63;i:64;i:64;i:65;i:65;i:66;i:66;i:67;i:67;i:68;i:6
8;i:69;i:69;i:70;i:70;i:71;i:71;i:72;i:72;i:73;i:73;i:74;i:74;i:75;i:75;i:76;i:76;i:77;i:77;
i:78;i:78;i:79;i:79;i:80;i:80;i:81;i:81;i:82;i:82;i:83;i:83;i:84;i:84;i:85;i:85;i:86;i:86;i:
87;i:87;i:88;i:88;i:89;i:89;i:90;i:90;i:91;i:91;i:92;i:92;i:93;i:93;i:94;i:94;i:95;i:95;i:96
;i:96;i:97;i:97;i:98;i:98;i:99;i:99;}}

session文件:

a|O:1:"a":3:{s:1:"a";s:6:"hello,";s:1:"b";s:6:"world!";s:1:"c";a:100:{i:0;i:0;i:1;i:1;i:2;i:
2;i:3;i:3;i:4;i:4;i:5;i:5;i:6;i:6;i:7;i:7;i:8;i:8;i:9;i:9;i:10;i:10;i:11;i:11;i:12;i:12;i:13
;i:13;i:14;i:14;i:15;i:15;i:16;i:16;i:17;i:17;i:18;i:18;i:19;i:19;i:20;i:20;i:21;i:21;i:22;i
:22;i:23;i:23;i:24;i:24;i:25;i:25;i:26;i:26;i:27;i:27;i:28;i:28;i:29;i:29;i:30;i:30;i:31;i:3
1;i:32;i:32;i:33;i:33;i:34;i:34;i:35;i:35;i:36;i:36;i:37;i:37;i:38;i:38;i:39;i:39;i:40;i:40;
i:41;i:41;i:42;i:42;i:43;i:43;i:44;i:44;i:45;i:45;i:46;i:46;i:47;i:47;i:48;i:48;i:49;i:49;i:
50;i:50;i:51;i:51;i:52;i:52;i:53;i:53;i:54;i:54;i:55;i:55;i:56;i:56;i:57;i:57;i:58;i:58;i:59
;i:59;i:60;i:60;i:61;i:61;i:62;i:62;i:63;i:63;i:64;i:64;i:65;i:65;i:66;i:66;i:67;i:67;i:68;i
:68;i:69;i:69;i:70;i:70;i:71;i:71;i:72;i:72;i:73;i:73;i:74;i:74;i:75;i:75;i:76;i:76;i:77;i:7
7;i:78;i:78;i:79;i:79;i:80;i:80;i:81;i:81;i:82;i:82;i:83;i:83;i:84;i:84;i:85;i:85;i:86;i:86;
i:87;i:87;i:88;i:88;i:89;i:89;i:90;i:90;i:91;i:91;i:92;i:92;i:93;i:93;i:94;i:94;i:95;i:95;i:
96;i:96;i:97;i:97;i:98;i:98;i:99;i:99;}}

注:上述文章无版权回护,可以恣意修正,传布.若有贰言,请mailto:chensiping@sina.com.然后大吼:别人可以,我为什么就不可以?(是不是有点阎罗教练的味道,默默的确是电影看多了,抽嘴巴是会痛的,各位其实明白这个道理了就行了)

活着的死人 发表于 2015-2-4 09:28:46

说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。

谁可相欹 发表于 2015-2-5 17:36:11

我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。

仓酷云 发表于 2015-2-13 01:02:12

爱上php,他也会爱上你。

乐观 发表于 2015-2-19 09:02:37

在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。

第二个灵魂 发表于 2015-2-26 12:10:51

遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。

简单生活 发表于 2015-3-5 18:32:22

没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。

若天明 发表于 2015-3-5 19:32:10

个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。

因胸联盟 发表于 2015-3-8 11:09:39

基础有没有对学习php没有太大区别,关键是兴趣。

愤怒的大鸟 发表于 2015-3-15 22:11:53

作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。

蒙在股里 发表于 2015-3-16 20:05:44

遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。

深爱那片海 发表于 2015-3-19 23:46:04

建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。

小魔女 发表于 2015-3-20 13:36:06

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

小女巫 发表于 2015-3-24 21:02:41

本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。

灵魂腐蚀 发表于 2015-4-3 05:53:45

再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。

再见西城 发表于 2015-4-3 11:59:13

因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax

分手快乐 发表于 2015-4-6 11:57:30

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

透明 发表于 2015-4-11 15:10:32

本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。

飘灵儿 发表于 2015-4-21 19:11:44

真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
页: [1]
查看完整版本: PHP教程之php:用序列化或session对象让oo停止究竟...