如何在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-stuff。
编辑=======================================
好的,现在我有了这个小小的解决方法,它应该比包含一个全新的文件更有效率。但是我仍然在寻找更好的解决方案:)
我只是将上面的代码放在一个全局函数中:
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文件。
答案 0 :(得分:1)
您可以在脚本的开头声明$myArray
(您可以使用前置文件),然后在此之后的任何时候使用$GLOBALS['myArray']
访问它。
答案 1 :(得分:0)
您可以在php.ini中使用auto_prepend_file
和auto_append_file
配置指令,您可以在其中定义任何全局变量的编组和解组。您仍然需要执行序列化技巧,但您可以在一个地方执行此操作,而无需记住包含处理程序。