首頁  >  問答  >  主體

確認 PHP 靜態變數不會跨請求持續存在

我正在尋找靜態變數不儲存在 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 框架)記住靜態變數時,它可能不會清除靜態變數以提高請求之間的速度。

P粉567281015P粉567281015378 天前748

全部回覆(1)我來回復

  • P粉654894952

    P粉6548949522023-10-31 00:02:00

    PHP 不保留請求之間的應用程式狀態。在 PHP 應用程式生命週期中,應用程式會根據每個請求重新執行。靜態變數旨在執行離開作用域時在局部函數作用域中保留變數的值。文件中沒有任何地方提到靜態變數旨在跨請求保留值。

    回覆
    0
  • 取消回覆