即將在 Slim Framework 中進行的變更

最近日職終於稍稍緩和下來,我可以重新開始執行 Slim Framework 的工作。以下是一些在下一次穩定版本中推出的新功能和變更,這些功能和變更目前已在開發分支中提供,協助您開始更新應用程式。

環境

  • 現在包含 HTTP_ 前置詞的 HTTP 標頭會在 Environment 物件中保留 HTTP_ 前置詞。

要求

  • 會在實例化時解析 Environment 物件中的 HTTP 標頭,並在 Request 的公開 headers 屬性中提供這些標頭。
  • 會在實例化時解析 Environment 物件中的 Cookie,並在 Request 的公開 cookies 屬性中提供這些 Cookie。
  • Request 的公開 headerscookies 屬性使用新的 \Slim\Helper\Set 介面。

如果您使用自訂中介軟體更新 Request 物件中的標頭或 Cookie,您現在必須針對 Request 物件中的 cookiesheaders 屬性執行此操作,而不是針對 Environment 物件。

Request 物件的下列方法會在下一次主要點版本中不建議使用

  • cookies()
  • headers()

回應

  • HTTP 標頭現在會設定在 Response 的公開 headers 屬性中。
  • HTTP 標頭現在會設定在 Response 的公開 cookies 屬性中。
  • Response 的公開 headerscookies 屬性使用 \Slim\Helper\Set 介面。
  • 使用 setStatus(int $status)getStatus() 方法,而不是 status()
  • 直接使用公開 headers 屬性,而不是 headers()header()
  • 使用 getBody()setBody() 方法,而不是 body()
  • 使用 getLength() 方法,而不是 length()
  • 反覆運算 headerscookies 屬性,而不是 Response 物件本身。
  • 藉由使用新的 \Slim\Helper\Set 介面,Response 物件中的 cookies 並不會在 Slim 應用程式生命週期的最尾端(在最後一個中間件執行後,在 HTTP 回應傳會給客戶端之前的時間點)之前序列化成 HTTP 標頭。如此一來,自訂中間件就能使用較為簡潔的 \Slim\Helper\Set 介面操作 Response 的 cookies,而不用動到 \code class="language-plaintext highlighter-rouge">Set-Cookie 標頭。

Response 物件的下列方法與介面將會在下一項主要版本中標示為不建議使用。

  • headers()
  • header()
  • length()
  • body()
  • status()
  • \ArrayAccess
  • \Countable
  • \IteratorAggregate

Set

下一項穩定版將會納入 \Slim\Helper\Set 介面。這個介面將會用在 Slim 應用程式中諸多集合裡,例如 cookies、標頭等。這個介面有助於統一和簡化 Slim 的各種方法和介面。\Slim\Helper\Set 介面是

__construct(array $items);
set(string $key, mixed $value);
get(string $key, mixed $defaultValue);
add(array $items);
all();
keys();
has(string $key);
remove(string $key);

這個介面實作了 \ArrayAccess、\Countable 以及 \IteratorAggregate。

較舊的方法

上述所有待標示為不建議使用的方法,在下一項主要版本之前,仍會持續運作。

有問題嗎?

如有任何問題,請推文發送到 @slimphp 或在 Slim Framework 論壇 發文提問。