即將在 Slim Framework 中進行的變更
最近日職終於稍稍緩和下來,我可以重新開始執行 Slim Framework 的工作。以下是一些在下一次穩定版本中推出的新功能和變更,這些功能和變更目前已在開發分支中提供,協助您開始更新應用程式。
環境
- 現在包含 HTTP_ 前置詞的 HTTP 標頭會在 Environment 物件中保留 HTTP_ 前置詞。
要求
- 會在實例化時解析 Environment 物件中的 HTTP 標頭,並在 Request 的公開
headers
屬性中提供這些標頭。 - 會在實例化時解析 Environment 物件中的 Cookie,並在 Request 的公開
cookies
屬性中提供這些 Cookie。 - Request 的公開
headers
和cookies
屬性使用新的\Slim\Helper\Set
介面。
如果您使用自訂中介軟體更新 Request 物件中的標頭或 Cookie,您現在必須針對 Request 物件中的 cookies
或 headers
屬性執行此操作,而不是針對 Environment 物件。
Request 物件的下列方法會在下一次主要點版本中不建議使用
cookies()
headers()
回應
- HTTP 標頭現在會設定在 Response 的公開
headers
屬性中。 - HTTP 標頭現在會設定在 Response 的公開
cookies
屬性中。 - Response 的公開
headers
和cookies
屬性使用 \Slim\Helper\Set 介面。 - 使用
setStatus(int $status)
或getStatus()
方法,而不是status()
。 - 直接使用公開
headers
屬性,而不是headers()
或header()
。 - 使用
getBody()
或setBody()
方法,而不是body()
。 - 使用
getLength()
方法,而不是length()
。 - 反覆運算
headers
或cookies
屬性,而不是 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 論壇 發文提問。