刚刚开始学作一个WebAPP,数据查询的通常套路是经过一张PHP页面读取数据库,得到列表后“嵌写”在PHP页面中,虽然写法上丑陋至极,但也有“快糙猛”出效果的成就感,如图。php
后来想一想,不对啊,难道之后PHP就全这么写?仍是只有这个语言是这么写?搞了搞ASP.NET,代码的美观程度也好看不到哪里去啊,“嵌写”是水平的问题,不能怪语言。因而有了新想法。html
那个时候作开发时,数据的交互大量使用JSON和XML,从使用的方便角度,JSON更适合Web,因而突发奇想,干脆全部数据交互所有用JSON,连同PHP页面也当作一个JS文件来读取,因而有了这样一张流程。前端
使用LINK方式连接JS文件,仍是用AJAX来带回JSON,这个本质上只是同步和异步的差异,可是无论怎样,代码的可维护性已经高不少了,由于JSON的处理,彻底能够由JavaScript解决。mysql
最近几天在忙着开发一个历史类APP,数据不少,但有个特征:“查多改少”,甚至几乎没有“增删改”,几乎都是“查”。为了把交互体验作到最快,全部的数据所有压缩成一个JS文件。得益于前端框架,交互性能好的一塌糊涂。sql
回到咱们之前开发的PHP框架,咱们新建一个Model,来建立JSON,这个Model用来管理欧洲大事件的数据表数据库
class EuropeModel extends Model{ public static $data; public static $name; public $start_t; public function __construct(){ parent::__construct(); $this::$name='europe_event'; $this::$table='europe'; $this::$primary_key='start_t'; } }
在控制器里获取数据json
class EuropeController extends Controller{ public function Show($parameters=[]){ $EuropeModel=new EuropeModel(); $EuropeModel::$data=$EuropeModel::all(); $DPaperList=$EuropeModel::all(); render('create.html.php',['data'=>$DPaperList]); } }
最后能够在HTML页面中查看一下这个JSON数组
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>数据压缩Json</title> <meta charset="utf-8"> </head> <body> <?php echo "var json=".json_encode($data); $myfile=fopen("json.txt","w") or die("Unable to open file!"); $txt="var json=".json_encode($data); fwrite($myfile,$txt); fclose($myfile); ?> </body> </html>
若是数据所有导出为JSON,那么数组的数字索引已经没有存在的必要了,由于数字索引和字符串索引只须要有1个,以避免形成存储空间的浪费。前端框架
这里引入PHP官网的文档,在DB访问层就能够设置一个BOOLEAN变量来规定导出的数组索引框架
<?php $link = mysqli_connect("localhost", "my_user", "my_password", "world"); /* check connection */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } $query = "SELECT Name, CountryCode FROM City ORDER by ID LIMIT 3"; $result = mysqli_query($link, $query); /* numeric array */ $row = mysqli_fetch_array($result, MYSQLI_NUM); printf ("%s (%s)\n", $row[0], $row[1]); /* associative array */ $row = mysqli_fetch_array($result, MYSQLI_ASSOC); printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]); /* associative and numeric array */ $row = mysqli_fetch_array($result, MYSQLI_BOTH); printf ("%s (%s)\n", $row[0], $row["CountryCode"]); /* free result set */ mysqli_free_result($result); /* close connection */ mysqli_close($link); ?>