2013-08-01 80 views
0

如何在PHP中定義超全局數組?在PHP中定義自定義超全局數組

我知道沒有辦法做到這一點。不過,我認爲可能會有一些「大腦」知道解決它的方法。具體而言,我想每個.php文件都有一個數組,我擁有相同的數據。我也想訪問這樣的:

echo $_HANS["foo"]; 

if(isset($_HANS["foo"]) && !empty($_HANS["foo"])) // DO 

重要的,我是,我不希望有一個靜態類,在這裏我要訪問我的成員如下:

myClass::myVariable; 

現在我有這樣的事情,但我想這不是真正有效:

define('HANS', serialize(array('FooKey' => 'FooData'))); 

要訪問它,我必須反序列化它。將數據存儲在變量中,然後我可以使用索引運算符。

$_HANS = array(); 
foreach(unserialize(HANS) as $Key => $Data) 
{ 
    $_HANS[$Key] = $Data; 
} 
echo $_HANS["FooKey"]; 

必須有一種方法可以在每個文件中跳過這整個foreach文件。

編輯=======================================

好吧,所以現在我有了一個小小的解決方法,它應該比包含一個全新的文件更有效一些。不過我還是聽了一個更好的解決辦法:)

我只是把這個代碼上面的全局函數:

function getData() 
{ 
    $_DATA = array(); 
    foreach(unserialize(HANS) as $Key => $Data) 
    { 
     $_DATA[$Key] = $Data; 
    } 
    return $_DATA; 
} 

我要做的一切的就是把下面這行代碼在每一個。 PHP文件:

$_HANS = getData(); 

約php.ini的問題是與公司提供的「虛擬主機」的兼容性。他們經常給你一個Apache,PHP,MySQL和Perl的預定義安裝(通常是:LAMP),並且不允許你編輯php.ini文件。

+1

包括與其他文件 – 2013-08-01 20:43:16

回答

1

您可以在腳本的開頭聲明$myArray(您可以使用前綴文件),然後從$GLOBALS['myArray']之後的任何點使用$GLOBALS['myArray']進行訪問。

+0

陣列中的文件,不會神奇地把它放在「每個.php文件」 – 2013-08-01 20:52:23

+0

然後,我必須做這樣的事情,不是嗎? $ _HANS = $ GLOBALS ['myArray']; – Hans123

+0

在前置文件中聲明它會使其在每個文件上都可用。然後'$ GLOBALS'就像任何其他變量一樣訪問它,而不需要序列化技巧。 – ironcito

0

您可以使用php.ini中的auto_prepend_fileauto_append_file配置指令,在其中您可以定義編組和任何全局變量的解組。你仍然需要做序列化技巧,但是你可以在一個地方完成,而不必記得包含處理程序。