model資料夾
model
資料夾下儲存的是一些相關類的php檔案,在HTML檔案生成的時候,利用這些類能夠高效地輔助檔案與檔案之間的排程轉換。資料夾下的內容如下:
這裡列舉一些重要的類檔案:
Route.php檔案
前文中在實現 route.php
的路由排程過程中有出現使用類Route
的情況,實際上就是呼叫這裡的類Route
的相關方法去實現的。這個 Route
類是一個簡單的路由器,它可以用於處理基於 URI 和 HTTP 方法的請求路由。它支援新增、匹配和分組路由,以及定義引數模式。下面介紹一下部分重要屬性和方法:
Route.php檔案的部分屬性
protected static $routes
: 儲存所有註冊的路由。protected static $patterns
: 儲存所有自定義的引數模式。protected static $groupStack
: 儲存當前的路由組屬性。
match 方法
程式碼截圖如下:
match
方法將指定的 HTTP 方法、URI 和處理動作新增到路由中。其中,array_map('strtoupper', (array)$methods)
將方法名轉為大寫,便於規範匹配。
any 方法
程式碼截圖如下:
any
方法支援任意 HTTP 方法的路由,保證前端呼叫的時候能夠保證所有的基本請求方式都能使用。
各種 HTTP 方法的快捷方式
程式碼截圖如下:
將不同的 HTTP 方法打包在 Route
類中,方便實現呼叫。
group 方法和 getGroup 方法
程式碼截圖如下:
在 group
方法中,定義一個路由組,將傳入的屬性和當前組的屬性合併,然後執行回撥函式。其中,array_pop(self::$groupStack)
在執行完回撥函式後恢復上一個路由組的屬性。
getGroup
方法則是用於獲取當前的路由組屬性。
addRoute 方法
程式碼截圖如下:
該方法將一個新路由新增到 $routes 陣列中,便於後續對路由的檢查。
checkRoute 方法
程式碼截圖如下:
該方法檢查當前請求是否匹配某個路由,並匹配請求方法。同時,使用定義的引數模式替換 URI 模式中的佔位符。然後匹配 URI 和域名,如果匹配成功,將匹配的引數儲存到 $_GET
中。
DB.php 檔案
在編寫程式碼的過程中,如果直接呼叫php中與資料庫相關的語句,可能會導致程式碼可閱讀性差,結構混亂從而加大了系統的維護成本。故使用 DB.php
來統一管理與資料庫相關的互動操作。DB
類是一個封裝了 MySQL 資料庫操作的靜態類,用於簡化資料庫操作並提高程式碼的可讀性和可維護性。它使用 PHP 的 mysqli
擴充套件來與 MySQL 資料庫進行互動。下面介紹一下部分重要屬性和方法:
初始化資料庫連線
初始化Init
方法的具體程式碼如下:
該方法初始化與 MySQL 資料庫的連線,並儲存在全域性變數 $uojMySQL
中。並且,使用 mysqli_connect
函式連線資料庫,如果連線失敗,輸出錯誤資訊並終止程式。
SQL 注入防護
escape
方法的具體程式碼如下:
該方法使用 mysqli_real_escape_string
函式對輸入的字串進行轉義,以防止 SQL 注入攻擊。
資料提取方法
fench
方法的具體程式碼如下:
該方法從查詢結果集中獲取一行作為關聯陣列或數字陣列。
基本資料庫操作
基本的增刪改的實現,這裡僅給出實現程式碼,程式碼如下:
資料選擇方法
程式碼如下:
select
方法執行查詢並返回結果。selectAll
方法返回查詢結果中的所有行。selectFirst
方法返回查詢結果中的第一行。selectCount
方法返回查詢結果的行數。
檢查表是否存在
checkTableExists
方法的具體程式碼如下:
該方法透過嘗試查詢表中的一行資料來檢查表是否存在。
行數和受影響行數
num_rows
和 affected_rows
方法的具體程式碼實現如下:
其中,num_rows
方法返回結果集中行的數量,affected_rows
方法返回上一次查詢中受影響的行數。