iT邦幫忙

0

PHP如何多個頁檔案共用一個類

最近遇上一個問題,由於要用到棧(STACK)的儲存結構,所以從網上找了教學共使用
而這個棧又要存放是一個類.所以做了以下一個PHP檔案.
<php
............

public class YYYY()
{
...................
.....................
}

public class stack()
{
public function push(){}
public function pop(){}
.......................
}
stack =new Stack();
?>
但當我在其他PHP檔INCULDE 這個PHP檔後,再使用stack ,並執行多次push(new YYYY())後,再輸出結果,只發現每一個PHP檔stack只有一個內容插入, 而不是共用這個stack並有多個內容放入,所以想請教各位大大如何在多個PHP檔共用一個類.

0
Peter學程式
iT邦新手 1 級 ‧ 2021-02-14 22:41:26

不同的 PHP 檔案運行在伺服器上對伺服器來說是多個 Program 吧,可以考慮利用類似 IPC (inter-process communication) 做到共享記憶體,這樣才能對同一個 Stack 做讀寫,請參考該連結
不過小弟覺得這樣做有點危險就是了,不知道你的需求是什麼?

BTW: PHP 的 IPC 我也沒搞過,小弟只能提供初淺的想法,無法告訴你程式碼要怎麼寫 XD

0
fillano
iT邦超人 1 級 ‧ 2021-02-16 05:50:26

如果是當作網頁伺服器後端的程式使用,php程式的生命週期就只在一個請求執行的期間,即使不同的程式用include來共用你定義的類以及更關鍵的全域變數,對於每個請求來說,他都會重新跑一次。

另外,如果要在每次請求只會使用到同一個棧,請用Singleton(單例)來設計你的類,這樣不論在哪裡使用,只會有一個類的實例產生。

如果要做一個能跨越請求共用的棧,除了考慮怎樣共用儲存體,還得考慮到底是怎樣共用:

  • 所有人都用同一個儲存體
  • 每個Session使用同一個儲存體
  • 每個用戶,跨Session使用同一個儲存體

等等的狀況,來設計不同的機制,你得先考慮清楚這些問題。

0

每一個php運行都是一個獨立的執行個體。並不會被共用的。

如果非瀏覽器式運行的php。
一般並無法靠session或cookie的方式處理的情況下。
比較常用的招就是存成json檔或是直接使用資料庫來處理。

如果是瀏覽器的應用個體,則大多數是直接用其瀏覽器及session的特性來處理記憶了。

我要發表回答

立即登入回答