0

如何在 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 文件。

4

2 回答 2

1

您可以$myArray在脚本的开头声明(您可以使用前置文件),然后$GLOBALS['myArray']在之后的任何时候使用它来访问它。

于 2013-08-01T20:49:17.840 回答
0

您可以使用 php.ini 中的auto_prepend_fileandauto_append_file配置指令,您可以在其中定义任何全局变量的编组和解组。您仍然需要执行序列化技巧,但您可以在一个地方执行此操作,而无需记住包含处理程序。

于 2013-08-01T20:46:16.363 回答