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
方法返回上一次查询中受影响的行数。