2011-11-24 45 views
0

我讀到一些關於如$ _ SERVER或(見詳細PHP Manual Superglobals)的一天,現在SuplerGlobals,我問我:在PHP中擁有SuperGlobal變量?

是否有可能實現自己的超全局變量? 旁邊的常量...

因此,例如用戶A在變量中寫入一些東西,如果用戶B正在調用它可以看到。 就像服務器範圍的會話變量或其他東西。

請不要着急,如果一個愚蠢的問題:) 我知道有幾個方法外,像SQL,XML之類的東西,但也許......

回答

2

PHP不具有可在用戶之間共享的上下文。你應該更換一些像SQL服務器或文件。你也可以檢查一些擴展名,如memcache,這可能會幫助你實現你的目標。

+0

它是一個德語頁面,但看起來正是我正在尋找:[鏈接](http://www.web-skripte.de/script_memcache.htm)謝謝! – Harry

1

這是不可能的,你只能看到你自己的會話數據。

要達到這個目標,您需要將數據存儲在其他地方。在文本文件或MySQL數據庫中將是最常見的。

+0

使用文件很難擴展(可能不會很快)和一個數據庫 - 好吧,我知道他們,但那不是我正在尋找:)謝謝反正。 – Harry

3

你對PHP的全部想法是超全局的。
這些變量總是隻有一個腳本運行時可用,沒有整個站點。

+0

好的謝謝你的建議。你是完全正確的。 – Harry

0

我想你可以使用(asterix)export yourvar="something"(asterix)和使用GETENV

SRY接受它,不知道如何嵌入星號=`,但最好是避免它...

如果你使用Apache以下可以使用: http://php.net/manual/en/function.apache-setenv.php

同樣的想法,enveroinment可變

+1

env變量也不起作用。它將僅在本地環境中設置 –

+0

您錯了。如果PHP從控制檯運行 - 它將被共享。使用setenv不會被共享,使用asterix調用來導出它將被共享。如果php運行通過Apache,它將與http://php.net/manual/en/function.apache-setenv.php共享,你最好在做出這樣的聲明之前閱讀手冊 – Tigra

+0

嗯。通過快速測試,我無法獲得單獨請求中的值。你確定它是這樣的嗎? –

2

我讀到一些關於如$ _ SERVER或SuplerGlobals(看到更多的細節PHP手冊超級全局)的一天,現在,我問我:

是否有可能實現自己的超全局變量?旁邊的常量...

是的,如果你有PHP runkit擴展名是可能的。

因此,例如用戶A寫的東西在其中,如果用戶B是調用它可以看到

變量這不是什麼超全局做的 - 它們是存在於全球範圍內的變量(如爲腳本實例的持續時間)。

如果你想在不同的調用之間共享數據,那麼你需要將它發送到你的存儲層或者(如果是單個客戶端的數據的話)發送到瀏覽器。

由於您在此處描述的實際上是共享會話,因此實現此目的的合理位置應在會話處理程序中。