欢迎使用 Slim
Slim 是一个 PHP 微框架,可以帮助您快速编写简单而强大的 Web 应用程序和 API。在其核心, Slim 是一个调度器,接收 HTTP 请求,调用适当的回调函数,并返回 HTTP 响应。就是这样。
有什么好处? Slim 是创建消耗、转换或发布数据的 API 的理想工具。Slim 也是快速原型设计的绝佳工具。事实上,您甚至可以构建带有用户界面的全功能 Web 应用程序。更重要的是,Slim 运行非常快,并且代码量很少。
在其核心,Slim 是一个调度器,接收 HTTP 请求,调用适当的回调函数,并返回 HTTP 响应。就是这样。
您并不总是需要像 Symfony 或 Laravel 这样的笨重解决方案。当然,这些都是很棒的工具。但它们通常过于复杂。相反,Slim 只提供了一组最小的工具,满足您所需,没有多余的东西。
它是如何工作的?
首先,您需要一个像 Nginx 或 Apache 的 Web 服务器。您应该 配置您的 Web 服务器,以便将所有适当的请求发送到一个“前端控制器” PHP 文件。您在此 PHP 文件中实例化和运行您的 Slim 应用程序。
Slim 应用程序包含响应特定 HTTP 请求的路由。每个路由调用一个回调函数并返回一个 HTTP 响应。要开始,首先实例化和配置 Slim 应用程序。接下来,定义应用程序的路由。最后,运行 Slim 应用程序。就是这么简单。以下是一个示例应用程序:
<?php
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Slim\Factory\AppFactory;
require __DIR__ . '/../vendor/autoload.php';
/**
* 实例化应用程序
*
* 为了使工厂正常工作,您需要确保已安装所选的 PSR-7 实现(例如 Slim PSR-7)和受支持的 ServerRequest 创建器(与 Slim PSR-7 包含在一起)
*/
$app = AppFactory::create();
/**
* 路由中间件应该添加在 ErrorMiddleware 之前
* 否则无法处理其中抛出的异常
*/
$app->addRoutingMiddleware();
/**
* 添加错误中间件
*
* @param bool $displayErrorDetails -> 在生产环境中应设置为 false
* @param bool $logErrors -> 参数传递给默认的 ErrorHandler
* @param bool $logErrorDetails -> 在错误日志中显示错误详情
* @param LoggerInterface|null $logger -> 可选的 PSR-3 日志记录器
*
* 注意:此中间件应该最后添加。它不会处理其后添加的任何中间件的异常/错误。
*/
$errorMiddleware = $app->addErrorMiddleware(true, true, true);
// 定义应用程序路由
$app->get('/hello/{name}', function (Request $request, Response $response, $args) {
$name = $args['name'];
$response->getBody()->write("你好,$name");
return $response;
});
// 运行应用程序
$app->run();
请求和响应
在构建 Slim 应用程序时,您通常直接使用 Request 和 Response 对象进行操作。这些对象表示 Web 服务器接收到的实际 HTTP 请求和返回给客户端的最终 HTTP 响应。
每个 Slim 应用程序路由都将当前的 Request 和 Response 对象作为参数传递给其回调函数。这些对象实现了流行的 PSR-7 接口。Slim 应用程序路由可以根据需要检查或操作这些对象。最终,每个 Slim 应用程序路由 必须 返回一个 PSR-7 Response 对象。
使用自己的组件
Slim 还与其他 PHP 组件良好配合。您可以注册额外的官方组件,如 Slim-Csrf、Slim-HttpCache 或 Slim-Flash,它们构建在 Slim 的默认功能之上。还可以轻松集成 Packagist 上找到的第三方组件。
如何阅读文档
如果您是 Slim 的新手,建议您从头到尾阅读本文档。如果您已经熟悉 Slim,可以直接跳转到相应的章节。
本文档首先解释了 Slim 的概念和架构,然后介绍了特定主题,如请求和响应处理、路由和错误处理。
文档许可证
本网站和文档使用的许可证是 Creative Commons 署名-非商业性使用-禁止演绎 4.0 国际许可。