本文档适用于Slim 4。正在寻找Slim 3 文档?
Slim 是一个 PHP 微型框架,可帮助您快速编写简单但功能强大的 Web 应用程序和 API。Slim 的核心是一个调度程序,它接收 HTTP 请求、调用适当的回调例程并返回 HTTP 响应。就是这样。
Slim 是创建使用、重新利用或发布数据的 API 的理想工具。Slim 也是快速制作原型的绝佳工具。哎呀,您甚至可以构建具有用户界面的全功能 Web 应用程序。更重要的是,Slim 速度超快,而且代码很少。
Slim 的核心是一个调度程序,它接收 HTTP 请求、调用适当的回调例程并返回 HTTP 响应。就是这样。
您并不总是需要像Symfony或Laravel这样的厨房水槽解决方案。当然,这些都是很棒的工具。但他们往往矫枉过正。相反,Slim 只提供了一组最少的工具来满足您的需求,除此之外别无其他。
首先,您需要一个网络服务器,例如 Nginx 或 Apache。您应该配置您的 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();
/**
* The routing middleware should be added earlier than the ErrorMiddleware
* Otherwise exceptions thrown from it will not be handled by the middleware
*/
$app->addRoutingMiddleware();
/**
* Add Error 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
* @param LoggerInterface|null $logger -> Optional PSR-3 Logger
*
* 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();
当你构建一个 Slim 应用程序时,你通常会直接使用 Request 和 Response 对象。这些对象表示 Web 服务器接收到的实际 HTTP 请求以及返回给客户端的最终 HTTP 响应。
每个 Slim 应用程序路由都被赋予当前的 Request 和 Response 对象作为其回调例程的参数。这些对象实现了流行的PSR-7接口。Slim 应用程序路由可以根据需要检查或操作这些对象。最终,每个 Slim 应用路由 必须返回一个 PSR-7 响应对象。
Slim 也被设计为可以与其他 PHP 组件一起使用。您可以注册额外的第一方组件,例如Slim-Csrf、Slim-HttpCache或Slim-Flash,它们基于 Slim 的默认功能构建。集成Packagist上的第三方组件也很容易。
如果您是 Slim 的新手,我建议您从头到尾阅读本文档。如果您已经熟悉 Slim,则可以直接跳到相应的部分。
本文档首先解释 Slim 的概念和体系结构,然后再深入探讨请求和响应处理、路由和错误处理等特定主题。
本网站和文档根据Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License获得许可。