剛剛開始學作一個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); ?>