Slim 3 Beta 1

我們已標記為 Slim 3 的 beta 1,並且已開始釋出 3.0 的第一個穩定版本的旅程。我們也開始製作新的 文件

我們真的很希望 Slim 3 能成為一個穩定且容易使用的架構。請 回報 你所找到的所有問題。另外,請注意,儘管我們希望無需變更任何功能簽章,但我們不承諾在釋出 3.0 的穩定版本之前,會保留 BC。

若要開始使用,你可以遵循 安裝說明,或使用 Rob Allen骨架應用

新功能

Slim 3 是會更新架構的所有部分的重大的更新。以下是一些重點。

依賴注入

\Slim\App 類別會組合一個實作 container-interop 的依賴注入容器。我們預設提供 Pimple,但有辦法把這個替換成你偏好的 DI 容器。DI 容器意指我們可以輕鬆地將第三方元件注入 Slim 應用程式,或覆寫 Slim 的內部物件,例如要求和回應物件。

PSR-7 支援

Slim 的 HTTP 要求和回應抽象支援 PSR-7。這表示其介面與先前版本有顯著的不同。在過去,每個 Slim 應用程式都有經過參照傳遞的所有應用程式的一個要求物件和一個回應物件。

然而,版本 3 將要求和回應物件視為值物件。每個中間層和應用程式路由會接收最新要求和回應物件作為引數。每個中間層和路由回呼程式負責傳回更新的 HTTP 回應物件。

HTTP 要求和回應物件也是不可變的。你必須使用適當的 withStatus()withHeader()withBody() 等要求和回應物件方法來建立並傳回具有指定變更的新要求或回應物件。你可以在 https://github.com/php-fig/fig-standards/blob/master/proposed/http-message.md 上的 PSR-7 文件中閱讀有關新介面的詳細內容。

這也使得 Slim 框架可以與第三方中間層程式碼一起使用。例如,也許你找到了一個專為其他框架設計的 PSR-7 中間層程式碼。但是,藉由使用 PSR-7 介面,該中間層程式碼也與 Slim 相容。

Slim 的 PSR-7 變更聽起來可能會有點複雜,但它們其實相當簡單。你可以在下列文章中找到更多關於 PSR-7 的資訊:

編寫為介面

3.0 發行版(大多數)是以編寫在介面上,這樣所有內部應用程式方法都預期介面而不是具體的類別實作。這表示如果你想的話,你可以很輕鬆地針對 Slim 應用程式的任何依賴項提供你自己的實作,你也可以使用 DI 容器服務注入或覆寫依賴項。

路由回呼程式繫結

如果你使用 Closures 作為路由回呼程式,這些 Closures 將繫結到 \Slim\App 執行個體。這表示你可以透過 $this 關鍵字在 Closure內部存取應用程式執行個體。

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

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

更為簡單的程式碼庫

這個框架程式碼庫簡單許多。先前,\Slim\App 類別包含許多與顯示或回應標頭有關的方法。現在不再會這樣,因為它們已移轉到其他適當的類別中。例如,\Slim\App::contentType()\Slim\App::status() 已移除,你必須使用回應物件的方法修改 HTTP 回應。Slim 不再提供視圖或記錄器物件,因此你可以挑選最符合你需求的最佳組件。當然,我們會持續提供整合,讓你可以透過 Twig-View 使用 Twig 樣板組件。

接下來是什麼?

我們相信 Slim 3 beta 1 已包含我們對版本 3.0 設想的所有關鍵變更,因此我們現在專注於穩定性與錯誤修正。我們滿意後,將會發布 3.0 的第一個穩定版本。