「七天自制PHP框架」應用:JSON生成器

剛剛開始學作一個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);
?>
相關文章
相關標籤/搜索