最近遇上一個問題,由於要用到棧(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檔共用一個類.
不同的 PHP 檔案運行在伺服器上對伺服器來說是多個 Program 吧,可以考慮利用類似 IPC (inter-process communication) 做到共享記憶體,這樣才能對同一個 Stack
做讀寫,請參考該連結。
不過小弟覺得這樣做有點危險就是了,不知道你的需求是什麼?
BTW: PHP 的 IPC 我也沒搞過,小弟只能提供初淺的想法,無法告訴你程式碼要怎麼寫 XD
如果是當作網頁伺服器後端的程式使用,php程式的生命週期就只在一個請求執行的期間,即使不同的程式用include來共用你定義的類以及更關鍵的全域變數,對於每個請求來說,他都會重新跑一次。
另外,如果要在每次請求只會使用到同一個棧,請用Singleton(單例)來設計你的類,這樣不論在哪裡使用,只會有一個類的實例產生。
如果要做一個能跨越請求共用的棧,除了考慮怎樣共用儲存體,還得考慮到底是怎樣共用:
等等的狀況,來設計不同的機制,你得先考慮清楚這些問題。
每一個php運行都是一個獨立的執行個體。並不會被共用的。
如果非瀏覽器式運行的php。
一般並無法靠session或cookie的方式處理的情況下。
比較常用的招就是存成json檔或是直接使用資料庫來處理。
如果是瀏覽器的應用個體,則大多數是直接用其瀏覽器及session的特性來處理記憶了。