ningleesherry 发表于 2018-12-23 06:14:41

PHP串行化与JSON-phelpszy

当用户在网页上点击“保存”按钮后,会触发前面所讲解的saveTab()函数,最终提交表单到save.php页面,该页面读取用户提交的JSON文本,并将其转换为PHP对象,进行后续处理,其代码如下:  
  $json_string = $_POST["json_string"];
  if(ini_get(”magic_quotes_gpc”)==”1″)
  {
  $json_string=stripslashes($json_string);
  }
  $notes = json_decode($json_string);
  foreach ($notes as $note)
  {
  echo $note->title.””.$note->content.”————————-”;
  }
  $p = f open(”load.php”,”w+”);
  f write($p,”var notes=”.json_encode($notes).”;”);
  f close($p);
  首先通过访问全局集合$_POST来获得提交的json_string隐藏域的值,而后进行处理,如果PHP的配置magic_quotes_gpc为On,则此时提交的文本中,引号会被转义,如果不进行处理,那么后面的json解码操作会失败,因此我们调用函数stripslashes()将其反转义。
  接下来我们使用json_decode()函数对提交的JSON文本进行解码,返回的对象保存在$notes变量中,此时$notes变量为一个数组,数组中每一个元素即一个Tab对象,为了清楚的看到这一点,我们对$notes数组进行迭代,依次打印出数组中每一个Tab对象的标题和内容,最后,我们打开文件load.php,将使用json_encode进行JSON编码后的$notes对象写入此文件,以待notepad.html文件调用,这样就完成了对对象的持久化存储工作。
  这里仍然需要说明的是我们精简的部分:在实际的生产环境中,你很可能需要在迭代$notes数组时将每一个Tab对象的信息写入数据库中,以方便其他的部分调用,而在load.php文件中,你可能并不是直接将JSON文本写入此文件,而是从数据库中读取一个结果集,而后迭代结果集,来生成一个PHP的数组,并将PHP数组进行JSON编码后,输出。
  好了,絮絮叨叨一大堆,简单点用个图来表示吧:

页: [1]
查看完整版本: PHP串行化与JSON-phelpszy