lacockj / phi
一个快速、易用的微框架,平衡速度、便捷性和安全性。
Requires
- php: ^7 || ^8
Requires (Dev)
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2024-09-08 06:39:11 UTC
README
Phi
Phi 是一个快速、易用的 PHP 微框架,旨在在核心 PHP 函数的 速度、类方法的 便捷性 和编码最佳实践的 安全性 之间找到完美的平衡。
Phi 包含以下方便的方法:
- 请求路由
- 参数化数据库查询
- HTTP 认证
- 自动响应数据格式化
请参阅Phi Wiki上的完整文档
请求路由
拥有漂亮、干净的 URL!
将此转换为: /api.php?type=user&id=12345
变为: /users/12345
干净的 URL 对网页地址来说看起来更好,并且对于 API 来说更容易使用和理解。Phi 可以从 URL 中提取参数用于您的代码,如上面的示例中的用户 ID。
您创建一个 URL 模式列表和请求方法列表,并将它们映射到您想要处理请求的任何函数或类方法。当请求与列表中的某个模式匹配时,处理函数将被调用,接收 URL 参数和输入数据。输入数据可以是 GET 查询参数、POST 表单数据或 php://input。
/users [POST] = Users->createNewUser
/users/@userID [GET] = Users->getUserByID
/users/@userID [PATCH] = Users->updateUser
Phi 会自动对不匹配 URL 模式的请求以适当的 404 "未找到" 状态码做出响应。同样,意外的请求方法会自动收到 405 "方法不允许" 状态码和带有您在列表中拥有的方法的 Allow:
响应头,这符合 RFC 2616。
响应格式化
为您的脚本的输出提供更多上下文。在一行代码中,您可以设置状态码、状态文本、内容类型,并以所选格式输出数据。
if ( $myDataArray ) {
$phi->response->json( $myDataArray ); // Defaults to status 200 "OK"
} else {
$phi->response->no_content( 204, "No data for the selected resource" ); // Custom status text
}
使用头和状态码可以更轻松地让您的 API 的消费者知道请求是否成功或失败,并以标准化的方式处理响应。所有这些信息都已经包含在 HTTP 定义 中,为什么不使用它呢?
数据库查询
数据库可能是您在 Web 服务中最有用、同时也是最麻烦的工具。在尽可能快地处理每个请求与尽可能安全地处理请求之间,始终存在着一场斗争。
您可以采取的最主要的数据库安全措施是使用 参数化查询。但这通常需要准备查询、绑定查询参数、执行查询、绑定结果变量,然后获取并使用结果,整个过程需要五个步骤。
使用 Phi,您可以在一行代码中执行参数化数据库查询。更好的是,您将获得一个可以像数组一样迭代的返回结果。
$cities = $phi->db->pq( 'SELECT * FROM `Cities` WHERE `population` > ?', $userInputPopulation );
foreach ( $cities as $city ) {
...
}
对脚本速度的影响最小;结果不是一次性全部加载到内存中,而是在访问时才加载,这对于非常大的结果集特别有用。使用 Phi 方便的查询方法不会丢失安全性,并且极大地提高了代码的可读性。
测试
./vendor/bin/phpunit tests