# 欢迎
Slim是一个PHP微框架,可以帮助您快速编写简单但功能强大的web应用程序和api。在其核心,Slim是一个dispatcher,它接收HTTP请求,调用适当的回调例程,并返回HTTP响应。就是这样。
# 重点是什么?
Slim是创建使用、重用或发布数据的api的理想工具。Slim也是快速原型制作的一个很好的工具。甚至可以用用户界面构建功能完整的web应用程序。更重要的是,Slim速度非常快,并且只有很少的代码。事实上,你可以在一个下午阅读和理解它的源代码!
> 在其核心,Slim是一个dispatcher,它接收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';
/**
* Instantiate App
*
* In order for the factory to work you need to ensure you have installed
* a supported PSR-7 implementation of your choice e.g.: Slim PSR-7 and a supported
* ServerRequest creator (included with Slim PSR-7)
*/
$app = AppFactory::create();
// Add Routing Middleware
$app->addRoutingMiddleware();
/*
* Add Error Handling Middleware
*
* @param bool $displayErrorDetails -> Should be set to false in production
* @param bool $logErrors -> Parameter is passed to the default ErrorHandler
* @param bool $logErrorDetails -> Display error details in error log
* which can be replaced by a callable of your choice.
* Note: This middleware should be added last. It will not handle any exceptions/errors
* for middleware added after it.
*/
$errorMiddleware = $app->addErrorMiddleware(true, true, true);
// Define app routes
$app->get('/hello/{name}', function (Request $request, Response $response, $args) {
$name = $args['name'];
$response->getBody()->write("Hello, $name");
return $response;
});
// Run app
$app->run();
```
图1:Slim应用程序示例
# 请求和响应
When you build a Slim app, you are often working directly with Request and Response objects. These objects represent the actual HTTP request received by the web server and the eventual HTTP response returned to the client.
当您构建一个slim应用程序时,您经常直接处理请求和响应对象。这些对象表示web服务器接收到的实际HTTP请求和返回给客户机的最终HTTP响应。
Every Slim app route is given the current Request and Response objects as arguments to its callback routine. These objects implement the popular[PSR-7](http://www.slimframework.com/docs/v4/concepts/value-objects.html)interfaces. The Slim app route can inspect or manipulate these objects as necessary. Ultimately, each Slim app route**MUST**return a PSR-7 Response object.
每个slim应用程序路由都将当前请求和响应对象作为其回调例程的参数。这些对象实现了流行的PSR-7接口。Slim应用程序路由可以根据需要检查或操作这些对象。最后,每个slim应用程序路由必须返回一个PSR-7响应对象。
# 自带组件
Slim is designed to play well with other PHP components, too. You can register additional first-party components such as[Slim-Csrf](https://github.com/slimphp/Slim-Csrf/),[Slim-HttpCache](https://github.com/slimphp/Slim-HttpCache), or[Slim-Flash](https://github.com/slimphp/Slim-Flash)that build upon Slim’s default functionality. It’s also easy to integrate third-party components found on[Packagist](https://packagist.org/).
Slim也可以很好地与其他PHP组件配合使用。您可以注册附加的第一方组件,如Slim- csrf、Slim- httpcache或Slim- flash,这些组件建立在Slim的默认功能之上。集成Packagist上的第三方组件也很容易。
# 如何阅读本文档
如果您是Slim的新手,我建议您从头到尾阅读本文。如果您已经熟悉Slim,则可以直接跳到相应的部分。
本文档首先解释了Slim的概念和体系结构,然后讨论了请求和响应处理、路由和错误处理等特定主题。
- 开始
- 安装
- 升级指南
- Web服务器
- 概念
- 生命周期
- PSR 7
- 中间件
- 依赖容器
- 实例 及通知和警告处理
- Request
- 请求方法
- 请求头信息
- 请求主体
- 上传的文件
- 请求帮助
- 路由对象
- Response
- 响应状态
- 响应标头
- 响应体
- 返回JSON
- 视图模板
- 路由
- 创建路由
- 路由回调
- 路由策略
- 路线占位符
- 路由名
- 路由组
- 路由中间件
- 路由表达式缓存
- 容器识别解析
- 封装中间件
- 路由的中间件
- 错误处理中间件
- 方法重写的中间件
- 输出缓冲中间件
- 内容长度中间件
- 扩展功能
- 以 / 结尾的路由模式
- 获取当前路由
- 设置CORS
- 使用POST表单上传文件
- 第三方组件
- slim-session
- auth
- slim-api-skeleton
- dir