Slim 3.0.0 已发布!

我们很高兴发布 Slim 3 的第一个稳定版本 3.0.0,该版本是经过一系列候选版本后发布的。

新增功能

Slim 3 是一次重大更新,其中框架的所有部分均已更新。以下是其中的重点。

依赖注入

\Slim\App 类合成一个依赖注入容器,该容器可实现 container-interop。我们默认使用 Pimple,但你有权自行将此内容换成自己偏好的 DI 容器,因为我们支持 容器互操作性 接口。DI 容器意味着我们可以轻松地将第三方组件注入到 Slim 应用程序中,或者覆盖 Slim 的内部对象(如请求和响应对象)。

PSR-7 支持

Slim 的 HTTP 请求和响应抽象支持 PSR-7。这意味着它们的接口与之前发布的版本有明显的不同。过去每个 Slim 应用程序有一个在整个应用程序中通过引用传递的请求对象和响应对象。

不过 3.0 版本将请求对象和响应对象视为值对象。各中间件层和应用程序路由将收到最新的请求和响应对象作为参数。各中间件层和路由回调负责返回一个更新的 HTTP 响应对象。

HTTP 请求和响应对象也是不可变的。你必须使用适当的 withStatus()withHeader()withBody() 等请求和响应对象方法来创建和返回一个具有指定更改内容的全新请求或响应对象。你可以在 https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-7-http-message.md 的 PSR-7 文档中详细了解新接口。

这样也能支持将第三方中间件与 Slim Framework 一起使用。举例来说,你可能会发现另一框架专用的 PSR-7 中间件。不过,由于使用了 PSR-7 接口,该中间件与 Slim 也是兼容的。

Slim 的 PSR-7 更改听起来可能很复杂,但实际上十分简洁。你可以在以下网址详细了解 PSR-7

按接口编码

3.0 版(大多数)都编码为,其全部内部应用方法都对界面进行预期,而不是具体类实现。这意味着,如果你愿意,可以选择为任何一个 Slim 应用的依赖项提供自己的实现,并且能使用 DI 容器服务注入或覆盖依赖项。

路由回调绑定

如果你使用闭包作为路由回调例程,这些闭包将被绑定到容器实例。这意味着,你能通过 $this 关键字在闭包内部访问 DI 容器实例。

<?php
$app = new \Slim\App();
$app->get('/hello/{name}', function ($request, $response, $args) {
    $url = $this->get('router')->pathFor('hello', ['name' => 'Josh']);

    return $response;
})->setName('hello');

更简单的代码库

该框架代码库要简单得多。之前,应用类中包含许多有关呈现或响应标头的函数。现在情况不再这样,它们已迁移到其他合适的类中。例如,已经移除了 contentType()status() 方法,并且你必须使用响应对象的函数来修改 HTTP 响应。Slim 不再装配视图或记录器对象,允许你挑选最适合你需求的组件。当然,我们继续通过 Twig 模板化组件通过 Twig-View 提供集成,并通过 PHP-View 提供 PHP 视图脚本集成。

入门

如需入门,你可以遵从 安装说明 或者从我们的 基础应用 开始。

还提供完整的 文档

谢谢

在没有我们的社区在测试 Slim 3 和提供宝贵反馈的情况下,此版本是不可能完成的。谢谢!