我正在尋找靜態變數不儲存在 PHP 請求之間的保證。以下是之前的問題:
跨多個 .php 頁面的 PHP 靜態變數
php 中的靜態變數是否在請求中持續存在?
跨會話的靜態變數
明確地說它們不是,但它們更多的是提供一種維護狀態的方法,而不是對預期行為的具體討論。
舉個例子,如果我的 PHP 程式碼如下:
function myfunc() { static $a=0; print $a++; } for ($i=0;$i<10;$i++) myfunc();
然後每次運行它時我都會得到 0123456789 的輸出。我對 PHP 的直覺/理解使我相當確定情況一定是如此。
在我自己的實驗中,我將一個(預分叉)apache 關閉到一個子進程,以確保在請求之間不會記住該變數。正如我所期望的那樣,它不會在請求之間被記住。但這只是 PHP 運行的場景。
我正在尋找的是:
指向官方文件的鏈接,該文件表示這是預期行為並且不會更改。 PHP 文件的相關部分並沒有明確提及這一點(註釋中除外)。
或者,當跨請求(例如網頁伺服器或效能增強 PHP 框架)記住靜態變數時,它可能不會清除靜態變數以提高請求之間的速度。
PHP 不保留請求之間的應用程式狀態。在 PHP 應用程式生命週期中,應用程式會根據每個請求重新執行。靜態變數旨在執行離開作用域時在局部函數作用域中保留變數的值。文件中沒有任何地方提到靜態變數旨在跨請求保留值。