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 將要求和回應物件視為值物件。每個中間層和應用程式路由會收到最新的要求和回應物件當作引數。每個中間層和路由呼叫回負責回傳已更新的 HTTP 回應物件。
HTTP 要求和回應物件也是不可變的。您必須使用適當的 withStatus()
、withHeader()
、withBody()
等要求和回應物件方法來建立並回傳一個有指定變更的新要求或回應物件。您可以在 PSR-7 文件中進一步了解新介面,網址:https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-7-http-message.md。
這也能讓您在 Slim 架構中使用協力廠商的中間層。舉例來說,也許您會找到設計給其他架構的 PSR-7 中間層。然而,透過使用 PSR-7 介面,那個中間層也能與 Slim 相容。
Slim 的 PSR-7 變更聽起來或許很複雜,但其實很簡單。您可以進一步了解 PSR-7 的資訊:
- http://www.php-fig.org/psr/psr-7/
- https://mwop.net/blog/2015-01-26-psr-7-by-example.html
- https://mwop.net/blog/2015-01-08-on-http-middleware-and-psr-7.html
以介面來編碼
3.0 版本(絕大部分)的程式碼都是採用使用介面取代具體類別實作的內部 app 方法,這表示你可以輕易地為任何 Slim app 相依項提供你自己的實作,並透過 DI(相依項注入)容器服務來注入或覆寫相依項。
路由回呼函式繫結
如果你使用 Closure 作為路由回呼函式,Closure 就會繫結到容器實例中。這表示你可以透過 $this
關鍵字存取 Closure 中的 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 並提供寶貴回饋的情況下,這個版本是不可能發布的,謝謝!